美文网首页
十 对象

十 对象

作者: 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