對象
-
對象字面量/對象直接量
var obj = {} : plainObject
var obj = { name:'wdq', eat:function(){ console.log('I`m eating'); } } obj.name; // 訪問屬性 obj.eat();// 執(zhí)行函數(shù)
-
構(gòu)造函數(shù)
-
系統(tǒng)自帶的構(gòu)造函數(shù) Object() Array() Number()
var obj = new Object(); obj.name = 'wdq'; obj.eat= function(){ console.log('I`m eating'); }
-
自定義
function Car(){
}
var c = new Car();
c.name = 'wdq';
c.run = function(){}> 和普通的函數(shù)沒有區(qū)別,只是人為的習(xí)慣首字母大寫(大駝峰式命名規(guī)則) 2.1 **屬性躯舔,函數(shù)的設(shè)置及初始化** ```js function Car(){ this.name = 'wdq', this.health = 100; this.run = function(){ this.health --; } } var car = new Car(); car.run(); car.health; // 99
-
使用this給Car設(shè)置屬性及函數(shù)驴剔,并初始化化
? 2.2 帶參數(shù)的構(gòu)造函數(shù)
// 屬性,函數(shù)有用戶決定
function Car(_name,_frun){
// this = {};
this.name = _name,
this.health = 100;
this.run = _frun;
// return this;
}
var car = new Car('BWM',
function(){this.health --;}
);
car.run();
car.health; // 99
上述構(gòu)造函數(shù)原理:會先在函數(shù)體前隱式的創(chuàng)建this對象粥庄,即 this = {} ,然后執(zhí)行this.xxx 丧失,最后再return this
包裝類型
Boolean,String,Number
- 自動裝箱
var num = 123; // (1)
num.len = 2; // (2)自動包裝 ,new Number(num).len =2
num.len // (3)undefined
num 為原始值,只有對象才能設(shè)置屬性
步驟(2)會進(jìn)行自動包裝 惜互,重新生成對象布讹,執(zhí)行
new Number(num).len=2
,步驟(3)也會自動包裝,生成新的對象训堆,
num.len
不存在描验,所以
num.len為
undefind`;步驟(2)和(3)生成的是兩個不同的對象
-
自動拆箱
var num = new Number(123); num * 2 // 246
num * 2 會將num 隱式的轉(zhuǎn)換成原始值類型,再乘以2