zoukankan      html  css  js  c++  java
  • 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垃圾回收机制会直接对垃圾进行回收。
  • 相关阅读:
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    206. Reverse Linked List
    205. Isomorphic Strings
    204. Count Primes
    203. Remove Linked List Elements
    201. Bitwise AND of Numbers Range
    199. Binary Tree Right Side View
    ArcGIS API for JavaScript 4.2学习笔记[8] 2D与3D视图同步
  • 原文地址:https://www.cnblogs.com/luckyflower/p/3742734.html
Copyright © 2011-2022 走看看