创建对象的方法(经典)
<script type="text/javascript">
//1.创建对象的一种方式
var obj = Object.create(new Object());
console.log(obj) //其实 obj = {}
obj.name = 25; //加属性
obj.fn = function() { //加方法
return 20;
}
console.log(obj) //等价 {name: 25, fn: ƒ}
//总结:使用Object.create()是将对象继承到__proto__属性上,没有继承任何原型方法,也就是说它的原型链没有上一层。
//Object.create(null)造出来的object是没有任何属性的
//2.创建对象的方式
var obj1 = new Object();
console.log(obj1);
obj1.age = 12;
obj1.fn = function() {
console.log("这样子添加方法也是可行的")
return 30;
}
console.log(obj1);
//3.{}字面量
var obj2 = {};
console.log(obj2); //{age: 12, fn: ƒ}
obj2.name = 30;
obj2.fn = function() {
console.log("这样子添加方法也是可行的")
return 40;
}
console.log(obj2); //{name: 30, fn: ƒ}
//4.构造函数创建对象
function CreatePerson(name) {
this.name = name;
this.showName = function() {
alert(this.name);
}
}
var getCreateName = new CreatePerson('苹果');
getCreateName.showName(); //苹果
console.log(getCreateName);//CreatePerson {name: "苹果", showName: ƒ}
//5、工厂方式创建对象
function createPerson(name) {
//1、原料---->空对象
var obj3 = new Object();
//2、加属性方法
obj3.name = name;
obj3.showName = function() {
alert(this.name);
}
//3、返回该new出来的原料空对象;
return obj3;
}
var getObjName = createPerson('苹果2代');
getObjName.showName();//苹果2代
console.log(getObjName);//{name: "苹果2代", showName: ƒ}
</script>