1通过字面量创建对象
//1.字面量
var obj = {
id: 1000,
name: "灯具",
price: 99
}
最基本的创建对象方法,但是每次只能创建一个;
2自定义对象 new Object()
var obj=new Object{};
obj.name='小明'
添加属性,方法同上
3工厂模式
function chuangjian(name, age) {
var obj = new Object();
obj.name = name;
obj.age = age;
return obj;
}
var aa = chuangjian('李华', 23);
4构造函数创建对象
function Persou(name, age) {
this.age = age
this.say=function(){}
}
var aa = new Persou('小明', 12);
优点:可以创建多个对象,使用比较方便
缺点:所创建的方法私有,方法多次声明赋值
5通过原型创建
function Ren(name,age){
}
Ren.prototype.name='小明';
Ren.prototype.asy=function(){};
var xm= new Ren();
优点:方法共有,不用一直创建赋值
缺点:但是对象的属性以后原型里依然保存属性;
6混合模式创建
function Ren(name,age){
this.name=name;
this.age=age;
}
Ren.prototype.asy=function(){};
var xm= new Ren('小明',12);
优点:可以批量创建对象,并且方法共有;
缺点:代码看起来较为散,不像一个整体
7动态混合模式
function Person(name, age, no) {
this.no = no;
this.name = name
this.age = age;
console.log(typeof this.say);
//方法
if (typeof this.say != 'function') {
Person.prototype.say = function () {
console.log(this.name + " 哈哈哈");
}
}
// Person.prototype.walk = function () {
// console.log(this.name + " 跑的飞起......");
// }
}
var p1 = new Person("秦始皇", 55, '001')
var p2 = new Person("赵高", 56, '002')
优点:可以批量创建对象,并且方法共有,且看起来较为完整
缺点:代码较为复杂难以理解