博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript 高级程序设计学习笔记(面向对象的程序设计) 2
阅读量:5032 次
发布时间:2019-06-12

本文共 1047 字,大约阅读时间需要 3 分钟。

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

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"]

 

转载于:https://www.cnblogs.com/jyasq/p/5692480.html

你可能感兴趣的文章
盒子模型
查看>>
局域网协议
查看>>
[HNOI2012]永无乡 线段树合并
查看>>
SqlServer之Convert 函数应用格式化日期(转)
查看>>
软件测试领域中的10个生存和发展技巧
查看>>
Camera前后摄像头同时预览
查看>>
HDU 1856
查看>>
课堂作业01--架构师的职责
查看>>
iOS计算富文本(NSMutableAttributedString)高度
查看>>
2017/09/15 ( 框架2)
查看>>
Centos下源码安装git
查看>>
gulp-rev-append md5版本号
查看>>
IO流之File类
查看>>
sql 基础语句
查看>>
CF717A Festival Organization(第一类斯特林数,斐波那契数列)
查看>>
oracle直接读写ms sqlserver数据库(二)配置透明网关
查看>>
控件发布:div2dropdownlist(div模拟dropdownlist控件)
查看>>
Oracle composite index column ordering
查看>>
ActiveReports 报表控件官方中文入门教程 (3)-如何选择页面报表和区域报表
查看>>
kaggle竞赛
查看>>