学习笔记之原型模式 prototype
来源:互联网 发布:js json长度 编辑:程序博客网 时间:2024/06/14 03:38
自定义一个空对象
Person = function(){}
使用prototype给Person设置公共的值
Person.prototype.name = "zhangsan";Person.prototype.age = 22;Person.prototype.say = function(){ alert("hello"); }
创建两个person实例
var person1 = new Person();alert(person1.name); //zhangsanvar person2 = new Person();alert(person2.name); //zhangsan
上面两个实例的name属性值都是zhangsan,而zhangsan是在peototype中设置的,比如当一个实例的name属性发生更改时,并不会去覆盖prototype中的属性,然后如果访问的属性是一个引用类型,并修改其中的值,那将导致所有实例访问该属性得到的都是修改后的值
person1.name = "yida";alert(person1.name); //yida --来自实例的属性alert(person2.name); //zhangsan --来自原型的属性
在把person1实例的name属性删除的话,属性又会重新变回prototype的name值
delete person1.name; //删除实例属性alert(person1.name); //zhangsan --来自原型的属性
可以使用Object的方法HasOwnProperty可以查看返回属性是来自实例中 还是来自原型 。来自实例返回true
alert(person1.hasOwnProperty("name"));
in 单独使用时 只要给定属性在实例或原型中存在,都返回true
alert("name" in person1); //truealert("names" in person1); //false
在使用for - in 循环时,返回的是所有能通过对象访问的,可枚举的属性。包括实例和原型。
for(var p in person1){if(p == "sayHi"){alert("found sayHi");}}
取得对象上所有可枚举的实例属性,可以用Object.keys()方法,该方法返回一个包含所有可以枚举属性的字符串数组
var keys = Object.keys(Person.prototype);alert(keys);//name,age,sayHi
取的对象上所有实例属性,无论是否可以枚举
alert(Object.getOwnPropertyNames(Person.prototype));//constructor,name,age,sayHi
原型最好与构造函数组合使用,将公用的并值相同的属性定义在原型中,而公用值不相等的属性定义在构造函数,类似继承的样子。具体怎么用有待学习。
0 0
- 学习笔记之原型模式 prototype
- 7种创建型模式 之7 PROTOTYPE 原型模式 《Java与模式》学习笔记
- 设计模式学习笔记六(Prototype原型模式)
- 设计模式学习笔记(十一)—Prototype原型模式
- 设计模式学习笔记_原型模式(prototype)
- 设计模式学习笔记---原型模式prototype(Java版)
- 设计模式学习笔记——Prototype原型模式
- 设计模式学习笔记九:原型模式(Prototype Pattern)
- 设计模式笔记--创建型模式之四--原型prototype
- [笔记]05Prototype原型模式
- 【红宝书笔记】原型模式-prototype
- 设计模式学习之--原型模式(Prototype)
- 设计模式学习-Prototype(原型)
- 设计模式学习笔记(四)——Prototype原型
- 设计模式学习笔记——原型(Prototype)框架
- 设计模式之Prototype(原型)
- 设计模式之Prototype(原型)
- 设计模式之Prototype(原型)
- 回溯法解01背包问题(C语言版)
- HibernateTemplate 源码
- 动态加载系列文章
- View的绘制流程入门.对郭霖大大文章知识小补充
- 项目中添加震动效果(分分钟哦~)
- 学习笔记之原型模式 prototype
- 电子或通信领域 当前的主流技术及其社会需求调查报告
- 挑战高楼(斐波那契非递归实现)
- css font-family大全
- centos7 安装mariadb(mysql)
- javascript Date 日期对象
- C++primer学习:标准库特殊设施:tuple
- Arm汇编指令
- jshint 配置说明