这里先放一个常规的函数对象代码:
var mrDeng = {
name : "nrDeng",
age : 40,
sex : "male",
health : 100,
smoke : function () {
console.log('i am smoking ! cool!!!');
mrDeng.health --;
},
drink : function () {
console.log('i am drink');
mrDeng.health ++;
}
}
对象的创建方法
-
第一种:var obj = { } 被称为plainObject ,对象字面量/对象直接量。
-
第二种:构造函数创建法:
1)系统自带有这些构造函数 :Object()、Array()、Number()2)自定义,想使用构造函数,一定得加new,这样就使函数具备构造函数功能。
var obj = new Object(); // 相当于 var obj = { };
obj.name = ‘abc’; //可以以这种格式加属性,这里和python一样
obj.sex = ‘male’;
obj.say = function(){};3)构造函数都用大驼峰命名法,就是从第一个单词的首字母就大写,用来区别与普通函数。
4)构造函数内部原理,三段式:
1.会在函数体最前面隐式的加上this = {} 2.执行this.xxx = xxx; 3.隐式的返回this
第一步会在函数顶端生成var this = {}空对象
var this ={
name : " ",
age : " "
};
return this
然后在底部创建一个return this;
这里要注意,谁调用了这个构造函数,this就指向谁。
下面是一个模拟构造函数运行原理的一段代码:
function Person(name,height){
var that = {};
that.name = name;
that.height = height;
return that;
}
var person = Person("xiaowang",180);
var person1 = Person("xiaozhang",175);
console.log(person)
console.log(person1)
--------------------------------------
{name: "xiaowang", height: 180}
{name: "xiaozhang", height: 175}
- 第三种:Object.create()
语法规则为:
var obj = Object.create(原型);
举一个例子:
var obj = {name : "sunny", age : 123};
var obj1 = Object.create(obj);
此时的obj1,就继承了对象obj的属性。