• javascript学习7-细节总结


    学习js,总结了一些需要注意的细节部分,和大家一起分享,共同进步。

    一、javascript区分大小写
    js数据类型:
    1.基本数据类型-数值型,字符串型,布尔型
    2.复杂类型:数组,对象
    3.特殊类型:null,undefined
    二、javascript中函数2种调用方式
    1.根据函数名直接调用,如:test(num1,num2);//此处test为自己写的一个函数。
    2.将函数名赋值给变量,变量名(实参)方式来调用。如:var myFun=test; myFun(num1,num2);
    备注:
    alert(test)中此时会打印出整个函数的内容,当赋值函数给变量名时,var myFun=test;alert(myFun)此时也会打印test函数体。
    三、函数返回值说明
    var myFun=test(num1,num2);此时如果test有返回值,则myFun为返回值,否则为undefined
    四、javascript支持可变参数
    比如:

    function test()
    {
    for(var i=0;i<arguments.length;i++)
    {
    alert(arguments[i]);
    }    
    }
    test(1,2);
    test(100);


    //备注:javascript函数不支持重载。函数名相同参数不同javascript不支持。js只关注函数名
    五、javascript一维数组

    var a=[1,2,3];
    for(var i=0;i<a.length;i++)
    {
    alert(a[i]);
    }

    1.数组的引用:数组名[下标]
    var a=[23,'hello',4.5];
    alert(a[2]);
    2.如果下标越界,则输出undefined。
    3.js数组可以动态增长。
    4.对字符串可以用split分割成字符串数组
    5.数组可以存放任意类型数据
    6.for in用法(了解)

    var arr=['a','b','c','hello'];
    arr['dd']='gaga';
    for(var key in arr)
    {
    alert(key+":"+arr[key]);
    }


    六、javascript二维数组
    允许每行列数不同。

    var arr2=[['a','b','d'],['c','d','e','f']];
    for(var i=0;i<arr2.length;i++)
    {
    //输出第一行
    for(var j=0;j<arr2[i].length;j++)
    {    
    document.writeln(arr2[i][j]+"&nbsp");
    }
    document.writeln("<br/>");
    }

     

    七、二分查找(见js学习6小练习2)


    八、javascript 类与对象
    javascript所有东西都是对象,基于对象语言。
    javascript中么有类,只有原型对象,但是很多人就将此叫做类。

    九、创建对象的方法
    a.工厂方法-使用new object俩创建对象并添加相关属性
    b.使用构造函数定义类(原型对象)

    eg.//此处使用构造函数定义类
    function Person(){}
    var a=new Person();
    window.alert(a.constructor);
    var b="1234";
    alert(b.constructor);
    if( a instanceof Person)
    {
    alert("a 是person");
    }

    eg2://属性名称访问
    访问属性方法有两种:
    1.普通方式 -对象名.属性名
    2.动态访问- 对象名["属性名"]

    var abc=89;
    function Person()
    {
    }
    var p1=new Person();
    p1.name="watermelon";
    alert(p1.name);
    var val="na"+"me";
    p1["name2"]="嘎嘎嘎";
    alert(p1.name2);
    p1[val]="watermelon222";
    alert(p1[val]);

    十、js回收机制
    js提供一种机制,主动释放对象内存:delete功能说明

    function Person(){}
    var a=new Person();
    a.age=50;
    delete a.age;
    //delete只能删除对象属性,无法删除一个对象属性
    
    function Person()
    {
    var nam="abc";//私有属性,创建类的对象时不能访问
    var age=900;
    
    }

    十一、this定义使用
    this不能放在类定义外部使用

    十二、prototype使用

    function Dog(){
    }
    Dog.prototype.shout=function()
    {
    //绑定功能到DOG
    alert("dog");
    }
    var dog1=new Dog();
    var dog2=new Dog();
    dog1.shout();
    dog2.shout();
    //此处dog1和dog2的shout函数是公共的,指的是一个函数。

    十三、javascript基于类object
    //初步体验object类的用法

    var p=new Object();
    p.name="dd";
    //array数组
    //给array添加一个方法为find(val),返回val的位置
    var p1=new Array();
    Array.prototype.find=function(val){
    for(var i=0;i<this.length;i++)
    {
    if(val==this[i])
    {
    return i;
    }
    }
    return -1;
    }
    p1[0]=1;
    p1[1]=2;
    p1[2]=3;
    alert(p1.find(3));
    //结果返回2

    十四、javascript中prototype设置的函数 不能访问私有属性

    十五、javascript的继承关系
    1对象冒充-可以实现多重继承
    function Stu(name,age)
    {
    this.name=name;
    this.age=age;
    this.show=function()
    {window.alert("name="+this.name+";age="+this.age);}
    }
    function MidStu(name,age)
    {
    this.stu=Stu;
    this.stu(name,age);//通过对象冒充的方式来达到继承的效果。备注:如果此句话没有写,就没有实现继承。

    }
    var midStu1=new MidStu("赵玉婷",20);
    midStu1.show();

    2、js中重载和重写
    2.1、js不支持重载,即不可以通过参数的个数来决定调用哪一个函数,但是js本身支持可变参数,所以可以看成js支持重载。
    例如 function abc(){ if(arguments.length==1)...}
    2.2、重写:js子类可以重新编写父类的某个方法来实现对其覆盖。

    十六、javascript 多态
    1、有食物(),人,动物三个类

    //主人喂食物给动物
    function Master()
    {
    this.feed=function(animal,food){
    document.write("主人给"+animal.name+food.name);
    }
    }
    function Food(name)
    {
    this.name=name;
    }
    function Fish(name)
    {
    this.food=Food;
    this.food(name);
    }
    function Bone(name)
    {
    this.food=Food;
    this.food(name);
    }
    //动物
    function Animal(name)
    {
    this.name=name
    }
    function Cat(name)
    {
    this.animal=Animal;
    this.animal(name);
    }
    function Dog(name)
    {
    this.animal=Animal;
    this.animal(name);
    }
    var cat=new Cat("小猫咪");
    var dog=new Dog("小狗狗");
    var fish=new Fish("小鱼");
    var bone=new Bone("小骨头");
    var master=new Master("西瓜");
    master.feed(cat,fish);

    十七、闭包

    function A()
    {
    var i=0;
    function b()
    {
    alert(i);
    }
    return b;
    }
    var c=A();
    c();//此种方法下,由于b中有对临时变量i的操作,故i不能被回收。c()相当于b()
    A();//此种方法下,gc垃圾回收机制会直接对垃圾进行回收。
  • 相关阅读:
    查看full gc频率怎么样
    【LeetCode每天一题】Linked List Cycle II(循环链表II)
    【LeetCode每天一题】Word Break()
    【LeetCode每天一题】Candy(分糖果)
    【LeetCode每天一题】Single Number II(数组中单个数字II)
    【LeetCode每天一题】Gas Station(汽油站)
    【LeetCode每天一题】Single Number(数组中单独的数字)
    【LeetCode每天一题】Sum Root to Leaf Numbers(二叉树所有根到叶节点之和)
    【LeetCode每天一题】Longest Consecutive Sequence(最长的连续序列
    【LeetCode每天一题】 Word Ladder(单词阶梯)
  • 原文地址:https://www.cnblogs.com/luckyflower/p/3742734.html
Copyright © 2020-2023  润新知