美文网首页
十 对象

十 对象

作者: WIN_Inn | 来源:发表于2018-09-17 20:57 被阅读0次

    前言

    var obj = {

        name : "sjm" ,

        age : "27"

    }

    // 对象的创建方法

    1. 对象字面量 / 对象直接量   var obj = { };  //plainObject

    2. 构造函数

            1) 系统自带的构造函数  var obj = new Object;

            2) 自定义( 函数 ) 大驼峰式命名规则  TheFirstName()

    构造函数内部原理(构造函数被new之后发生)

    1.在函数体最前面隐式的加上  var  this = {}.

    2. 执行this.xxx = xxx;

    3.  隐式的返回this;//如果显式的返回空对象,return{} ,那么构造函数就会变成空值                                                                               但是如果返回原始值,例如123,“abc”等,return 123; 那么函数会正常返回,不受                                        影响,不会返回123,“abc”这一类原始值,相当于还是隐式地返回了this,return this

    包装类(Number,String,...)

    var str = "4";

    str.length = 3;    // 原始值数字没有属性,这里会隐式的转换成包装类,然后删除。

                         new Number().length = 3; delete length;  操作都是在包装类上进行的,对原有的数字没有影响

    console.log ( str.length ) ;        //1


    var arr = [ 1, 2, 3, 4];

    arr.length = 2;

    console.log( arr );  //  [1, 2]


    插一道常见的闭包练习题

    function Person (  name, age, sex) { 

            var a = 0;

            this.name = name;

            this.age = age;

             this.sex = sex;

            function sss( ) { 

                    a++;

                    console.log( a );

            }

                this.say = sss;

    }

    var  oPerson = new Person ( ) ;

    oPerson.say ( ) ;         //1

    oPerson.say ( ) ;         //2

    var  oPerson1 = new Person ( ) ;

     oPerson1.say ( ) ;   //1

    /* 被重现new了之后,就会产生一个新的执行期上下文,Person函数被重新执行,a也被重新赋值

        如果不重新new的话,sss方法里的a就一直指向Person函数里的a变量,访问的是同一个值

    */


    var x = 1, y = z = 0;

    function add ( n ){ 

            return n = n+ 1;

    }

    y = add ( x ) ;

    function add ( n ){ 

    return n = n+ 3;

    }

    // x = 1; y = 4; z = 4;   函数预编译时候会提升,只走后面的add()

    相关文章

      网友评论

          本文标题:十 对象

          本文链接:https://www.haomeiwen.com/subject/qhwxnftx.html