js创建对象的三种方式
- var obj = new Object()
- var obj = { }
function Student(name,age){
this.name = name
this.age = age
this.sing = function(){
console.log("hello world");
}
}
var obj1 = new Student('zhangsan',18)
var obj2 = new Student("lisi",23)
console.log(obj1.sing===obj2.sing)
第三种通过new创建对象方式缺陷
- 创建多个对象中的引用数据类型在内存中都单独存在一份,浪费空间,如上所示两个对象的sing方法比较为false
改进(通过原型)
- 每个构造方法都有prototype属性,指向另外一个对象,称为原型对象
- 主要作用:共享方法
- 对象都有_ proto _ 属性,指向构造方法的原型对象,将共有方法放在原型对象上,所有new出来的对象都可以共享该方法
function Student(name,age){
this.name = name
this.age = age
}
Student.prototype.sing = function(){
console.log("helloworld");
}
var obj1 = new Student('zhangsan',18)
var obj2 = new Student("lisi",23)
console.log(obj1.sing===obj2.sing)
console.log(Student.prototype===obj1.__proto__)