<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><script type="text/javascript">//创建对象//原型模式//2、原型与in操作符//有两种方式使用in操作符:1、for-in;2、单独使用时,对象能返回给定属性的时候后,返回true,即:无论属性在实例还是原型中。function Person(){};Person.prototype.name = "宝清老窖";Person.prototype.age = 29;Person.prototype.job = "Soft Ware";Person.prototype.sayName = function(){console.log(this.name);}var person1 = new Person();var person2 = new Person();console.log('hasOwnPropertye: ' + person1.hasOwnProperty('name'));  //falseconsole.log('in: ' + ('name' in  person1));         //trueperson1.name = "大美女";console.log('hasOwnPropertye: ' + person1.hasOwnProperty('name'));   //trueconsole.log('in: ' + ('name' in person1));           //truedelete person1.name;//可以看出以上代码,只要原型或者实例上有属性,那么in就返回true//所以同时使用hasOwnPropertye和in 就可以判断出咱们访问到的属性是在实例上还是原型上function hasPrototypeProperty(object , name){return !object.hasOwnProperty(name) && (name in object);}console.log(hasPrototypeProperty(person1 , 'name'));  //trueperson1.name = "大美女";console.log(hasPrototypeProperty(person1  , 'name'));   //true//在使用for-in循环时,返回的实所有能通过对象访问的、可枚举的(enumerated)属性//包括存在于实例中的属性,也包括存在于原型中的属性。var o = {toString: function(){return "My Object";}}for(var prop in o){if(prop == "toString"){alert("Found toString");}}//Object.keys取得对象上所有可以枚举上的实例属性var keys = Object.keys(Person.prototype);console.log(keys); //["name","age","job","sayName"]var p1Keys = Object.keys(person1);console.log(p1Keys); //['name']//如果想要得到所有实例属性,不管是否枚举的话Object.getOwnPropertyNames();var pNames = Object.getOwnPropertyNames(Person.prototype);console.log(pNames);  //["constructor", "name", "age", "job", "sayName"]//注意,这里包含了不可枚举的constructor</script></body>
</html>

  

  提取js

//创建对象//原型模式//2、原型与in操作符//有两种方式使用in操作符:1、for-in;2、单独使用时,对象能返回给定属性的时候后,返回true,即:无论属性在实例还是原型中。function Person(){};Person.prototype.name = "宝清老窖";Person.prototype.age = 29;Person.prototype.job = "Soft Ware";Person.prototype.sayName = function(){console.log(this.name);}var person1 = new Person();var person2 = new Person();console.log('hasOwnPropertye: ' + person1.hasOwnProperty('name'));    //falseconsole.log('in: ' + ('name' in  person1));         //trueperson1.name = "大美女";console.log('hasOwnPropertye: ' + person1.hasOwnProperty('name'));   //trueconsole.log('in: ' + ('name' in person1));           //truedelete person1.name;//可以看出以上代码,只要原型或者实例上有属性,那么in就返回true//所以同时使用hasOwnPropertye和in 就可以判断出咱们访问到的属性是在实例上还是原型上function hasPrototypeProperty(object , name){return !object.hasOwnProperty(name) && (name in object);}console.log(hasPrototypeProperty(person1 , 'name'));  //trueperson1.name = "大美女";console.log(hasPrototypeProperty(person1  , 'name'));   //true//在使用for-in循环时,返回的实所有能通过对象访问的、可枚举的(enumerated)属性//包括存在于实例中的属性,也包括存在于原型中的属性。var o = {toString: function(){return "My Object";}}for(var prop in o){if(prop == "toString"){alert("Found toString");}}//Object.keys取得对象上所有可以枚举上的实例属性var keys = Object.keys(Person.prototype);console.log(keys); //["name","age","job","sayName"]var p1Keys = Object.keys(person1);console.log(p1Keys); //['name']//如果想要得到所有实例属性,不管是否枚举的话Object.getOwnPropertyNames();var pNames = Object.getOwnPropertyNames(Person.prototype);console.log(pNames);  //["constructor", "name", "age", "job", "sayName"]//注意,这里包含了不可枚举的constructor

  

转载于:https://www.cnblogs.com/xudy/p/5424220.html

js创建对象之原型模式2原型与in操作符相关推荐

  1. 【原型模式】原型模式深入分析

    文章目录 1. 原型模式 2.原型模式的应用场景 3. 原型模式的通用写法 3.1 先创建 IProtoType 接口 3.2 创建具体需要克隆的类 3.3 测试代码: 3.3.1 运行结果: 浅克隆 ...

  2. 设计模式 原型模式_原型设计模式:创建另一个小车

    设计模式 原型模式 创建对象确实是一个耗时的过程,也是一件昂贵的事情. 因此,我们现在正冒险节省时间和金钱. 我们该怎么做? 克隆奇迹多莉 有人记得多莉吗? 是的,是绵羊,是第一个被克隆的哺乳动物. ...

  3. 18 原型模式(原型设计模式)详解

    创建型模式: 单例(Singleton)模式.原型(Prototype)模式.工厂方法(Factory Method)模式.抽象工厂(Abstract Factory)模式和建造者(Builder)模 ...

  4. js创建对象的高级模式

    hello,安瑞万.第一次写博客,心情很激动啊.要是说的不好,你来打我啊?反正你也不知道我家地址.好了,不扯了.进入正题:要是写的不好欢迎大家来批评指导. what:创建对象的三种模式 --1,门户大 ...

  5. 【设计模式】原型模式 ( 浅拷贝 | 深拷贝 | 原型与单例冲突 | 禁用 final )

    文章目录 I . 原型模式 总结 II . 原型模式 浅拷贝 III . 原型模式 深拷贝 IV . 原型模式 与 单例 V . 原型模式 中的 final 关键字 ( 禁止出现 ) I . 原型模式 ...

  6. 【设计模式】原型模式 ( 概念简介 | 使用场景 | 优缺点 | 基本用法 )

    文章目录 I . 原型模式 概念简介 II . 原型模式 使用场景 III . 原型模式 优缺点 IV . 原型模式 实现及 简单示例 I . 原型模式 概念简介 原型模式 : 用原型实例指定创建对象 ...

  7. 原型模式(ProtoType) - Java里的对象复制

    一, 引用的复制和对象复制. 在编程中, 我们有时会用两个引用指向同一个对象. 例如: ArrayList a = new ArrayLIst(); ArrayList b = a; 看起来好像有a, ...

  8. 设计模式-原型模式(Prototype)

    Specify the kinds of objects to create using a prototypical instance,and create new objects bycopyin ...

  9. Java设计模式之创建型:原型模式

    一.什么是原型模式: 原型模式主要用于对象的创建,使用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象.UML类图如下: 原型模式的核心是就是原型类 Prototype,Prototype ...

最新文章

  1. linux内核调优参考
  2. ORA-02287: sequence number not allowed here
  3. 计算机科学申请文书,美国留学:看牛人怎么写申请计算机CS专业的文书
  4. LaTeX安装及周报模板
  5. LeetCode 中文刷题手册:LeetCode Cookbook下载
  6. 计算机安装win10配置,安装Win10系统配置的最低要求
  7. word转html,word转pdf
  8. 上证50基金有哪些_“50”指数基金有哪些?
  9. 基于Kubernetes构建企业容器云【入门实战篇】- 手动制作CA证书(二)
  10. Error response from daemon: conflict: unable to delete 31f279e888c0 (must be forced) - image is bein
  11. 投稿经验分享之四:SCI投稿之JEI录用
  12. 设置bing桌面壁纸
  13. 安卓开发-Parcel机制
  14. 关于用c++播放音乐的问题
  15. springboot整合Jasypt对数据库密码进行加密
  16. [创业之路-42] 创业是只有一小部分人活下来的游戏,探究创业失败的20个主要原因与提高成功率
  17. safari阅读模式 html,新版Safari我最爱的功能:自动进入【阅读模式】
  18. (JS设计模式与开发实践笔记)第二章
  19. There is no getter for property named ‘user‘ in ‘class com.jyr.wh.domain.User问题
  20. python shell怎么运行字符串拼接无输出_Python拼接字符串的7种方法总结

热门文章

  1. 王道 —— 操作系统的运行机制和体系结构
  2. Java中矩阵运算(math3的使用)
  3. vba 将xml导入到excel
  4. C++/C--string中的find()、find_first_of()、find_first_not_of()【转载】
  5. Opencv--addWeighted()
  6. php实现中英文网站插件,php官网英文自动跳中文
  7. 汇编程序的编辑、编译、连接与执行(附带DOSBox安装)
  8. Java7并发编程指南——第八章:测试并发应用程序
  9. DFB [02] 基础和相关的非常用的几个链接
  10. bean validation校验方法参数_Spring Validation最佳实践及其实现原理,参数校验没那么简单!