原型引入

303 阅读1分钟

1 为什么要引入原型

function Person(name,age){
    this.name=name;
    this.age=age;
    this.sayHi=function(){
        console.log("您好");
    }
}
var per1 = new Person("小白",20);
var per2 = new Person("小红",18);
per1.sayHi();
per2.sayHi();
console.log(per1.sayHi==per2.sayHi);
//false;不是同一个方法,因为每一个都有自己的对应空间

for(var i = 0 ;i<100 ; i++){
var per = new Person("小白",20);
per.sayHi();
}
<!--将会开辟100个空间这就造成了数据不能共享,浪费了大量的空间-->

    function mySay(){
        console("您好");
    }
    function Person(name,age){
            this.name=name;
            this.age=age;
            this.sayHi=mySay;
            }
        
        var per1 = new Person("小白",20);
        var per2 = new Person("小红",18);
        per1.sayHi();
        per2.sayHi();
        console.log(per1.sayHi==per2.sayHi);//true
        <!--可以节省空间,减少空间浪费问题。
        缺点:容易造成命名冲突问题
        解决方法:通过原型解决
        -->

2 原型对象的作用之一

  • 实现数据共享,节省内存空间
function Person(name,age){
                this.name=name;
                this.age=age;
                }
    //通过原型来添加方法
    Person.prototype.sayHi(){
        console.log("您好");
    };
    
    var p1 = new Person("小白",20);
    var p2 = new Person("小红",18);
    console.log(p1==p2)//false;
    console.log(p1.sayHi=p2.sayHi);//true