码迷,mamicode.com
首页 > 编程语言 > 详细

javascript 高级程序设计学习笔记(面向对象的程序设计) 2

时间:2016-07-21 17:55:32      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

在调用构造函数时会为实例添加一个指向最初原型的指针,我们可以随时为原型添加属性和方法,并且能在实例中体现出来,但如果是重新了原型对象,那就会切断构造函数与最初原型的联系。

function Dog () {
         
    }
    var friend = new Dog();

    Dog.prototype ={
        constructor : Dog,
        name : "Bob",
        age : 11,
        jump : function () {
             alert("跳一下"); 
        }
    };
    friend.jump();    //error

这里原型对象在创建Dog实例后重写,所以friend指向的原型中不包含jump().

在这里进行重写的部分有很多属性是可以共享的,例如name、age。当我们修改其中一个实例的属性时,其他实例也会受到影响,这样并不是我们想要的。所以在创建的时候常常使用构造函数与原型模式的组合。

构造函数模式定义实例属性,原型模式定义方法和共享属性。

function Dog (name,age,breed) {
         this.name = name;
         this.age = age;
         this.breed = breed;
         this.friends = ["Ange","Array"];
    }

    Dog.prototype ={
        constructor : Dog,
        jump : function () {
             alert("跳一下"); 
        }
    };
    var dog1 = new Dog("Bob","5","Shiba");
    var dog2 = new Dog("Amy","2","Alaska");
    dog1.friends.push("Edit");
    console.log(dog1.friends);     //["Ange", "Array", "Edit"]
    console.log(dog2.friends);     //["Ange", "Array"]

 

javascript 高级程序设计学习笔记(面向对象的程序设计) 2

标签:

原文地址:http://www.cnblogs.com/jyasq/p/5692480.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!