一、對象
1、創建一個對象,對象有一些屬性和方法。
var obj = {
name : 'object',
age : 20,
gender : 'bisexual',
difficult : function(){
console.log('你能把我咋地!');
this.age--;
},
length: function(){
console.log('大丈夫能屈能伸');
this.age++;
}
}
增:obj.father = 'Javascript';
刪:delete obj.name;
改:obj.gender = 'female';
查:console.log(obj.age);
當訪問一個對象沒有的屬性,返回undefined。
2、對象的創建方法:
1、plainObject,對象字面量/對象直接量,參照上面代碼。
2、構造函數(大駝峯式命名)
1.系統自帶:var obj = new Object();
2.自定義方法,看下圖代碼。
function CarManufacture(color,seat){
this.color = color;
this.seat = seat;
this.name = 'BMW';
this.height = '1400';
this.weight = 1000;
this.health = 100;
this.run = function(){
this.health--;
}
}
var car1 = new CarManufacture('red','leather');
var car2 = new CarManufacture('yellow','wood');
一個工廠生產出兩臺一模一樣的車,car1和car2,他們可以隨意調用自己的屬性和方法,互不相干。
3、構造函數內部原理:
1.在函數體最前面隱式var this = {};
2.執行this.xxx = xxx;
3.最後隱式return this;
function Person(name,height){
//var this = {}
this.name = name;
this.height = height;
this.say = function(){
console.log(this.say);
}
//return this;
return {};//return引用值可以搗亂,但return原始值影響不了。
}
var person1 = new Person('Jack',180);
var person2 = new Person('Tom',160);
二、包裝類:
屬性和方法專屬對象,原始值是堅決沒有屬性和方法的!!!
數字,字符串,布爾都可以new。但undefined和null沒有這種操作,這也是他倆不能調用toString的原因吧
var num = new Number(123);
var str = new String('abcd');
var bol = new Boolean('true');
var str = 'abc';
str += 1;
var test = typeof(str);//test == 'string'
//隱式new String(test).length == 6 delete
if(test.length == 6){
test.sign = 'typeof的返回結果可能爲String';
//隱式new String(test).sign = 'typeof的返回結果可能爲String' delete!!!
}
//隱式new String(test).sign = undefined
console.log(test.sign);//undefined
以上內容屬二哥原創,整理自 "渡一教育Javascript課程" ,一個值得推薦的"渡一教育"。