资讯专栏INFORMATION COLUMN

原型模式

Alfred / 2266人阅读

摘要:在默认情况下所有原型对象都会自动获得一个构造函数属性,这个属性包含一个指向属性所在函数的指针。原型与操作符通过对象能够访问给定属性时返回,无论实在实例中还是原型中。通过此方法可以取得对象上所有可枚举的实例属性。

prototype
我们创建的每个函数都有一个prototype(原型)属性,这个属性时一个指针,指向一个对象(函数的原型对象),这个对象的用途是可以由特定类型的所有实例共享属性和方法。在默认情况下所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向prototype属性所在函数的指针。
function Person(){
};
Person.prototype.name = "jeck";
Person.prototype.sayName = function(){
    console.log(this.name)
};
var p1 = new Person("jeck", 13);
p1.sayName();            //jeck
var p2 = new Person("andy", 22);
p2.sayName();            //jeck

Person.prototype指向原型对象
Person.prototype.constructor又返回指向Person

hasOwnProperty()
检测一个属性是否存在于实例中,还是存在于原型中。
function Person(){};
Person.prototype.name = "jeck";
var person1 = new Person();
person1.hasOwnProperty("name");        //false
person1.name = "andy";
person1.hasOwnProperty("name");        //true
原型与in操作符
通过对象能够访问给定属性时返回true,无论实在实例中还是原型中。
Object.keys()
通过此方法可以取得对象上所有可枚举的实例属性。
function Person(){};
Person.prototype.name = "jeck";
Person.prototype.age= "12";
Person.prototype.sex= "M";
console.log(Object.keys(Person.prototype));    //[name age sex]
var person1 = new Person();
person1.name = "andy";
console.log(Object.keys(person1));    //[name]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79375.html

相关文章

  • 理解JavaScript的核心知识点:原型

    摘要:首先,需要来理清一些基础的计算机编程概念编程哲学与设计模式计算机编程理念源自于对现实抽象的哲学思考,面向对象编程是其一种思维方式,与它并驾齐驱的是另外两种思路过程式和函数式编程。 JavaScript 中的原型机制一直以来都被众多开发者(包括本人)低估甚至忽视了,这是因为绝大多数人没有想要深刻理解这个机制的内涵,以及越来越多的开发者缺乏计算机编程相关的基础知识。对于这样的开发者来说 J...

    iKcamp 评论0 收藏0
  • JS函数的工厂模式、构造函数模式原型模式的区别

    摘要:于是就有了构造函数和原型模式混合模式组合使用构造函数模式和原型模式创建自定义类型最常见的方式,就是组合模式。 创建对象 JS有六种数据数据类型,其中五种属于基本数据类型:Null、Boolean、undefined、String、Number。而其它值都是对象。数组是对象,函数是对象,正则表达式是对象。对象也是对象。 来看一下对象的定义: 无序属性的集合,其属性可以包含基本值、对象、或...

    william 评论0 收藏0
  • 读《javaScript高级程序设计-第6章》之封装类

    摘要:创建构造函数后,其原型对象默认只会取得属性至于其他的方法都是从继承来的。上图展示了构造函数的原型对象和现有的两个实例之间的关系。所有原生的引用类型都在其构造函数的原型上定义了方法。 第6章我一共写了3篇总结,下面是相关链接:读《javaScript高级程序设计-第6章》之理解对象读《javaScript高级程序设计-第6章》之继承 工厂模式 所谓的工厂模式就是,把创建具体对象的过程抽象...

    seal_de 评论0 收藏0
  • JS基础之数据类型、对象、原型原型链、继承

    摘要:就是通过调用构造函数而创建的那个对象实例的原型对象。构造函数模式可以创建自定义引用类型,可以像创建内置对象实例一样使用操作符。 数据类型: 简单数据类型:Undefined、Null、String、Number、Boolean、Symbol 复杂数据类型:Object // Undefined:声明,但未初始化 // Null:空对象指针 typeof操作符(检测基本数据类型): ...

    LucasTwilight 评论0 收藏0
  • JavaScript_高程三_02

    摘要:实例中的指针仅指向原型,而不指向构造函数。调用构造函数时会为实例添加一个指向最初原型的或者而把原型修改为另外一个对象就等于切断了构造函数与最初原型之间的联系。 面向对象的程序设计 ECMA-262定义对象:无序属性的集合,其属性可以包含基本值,对象或者函数。普通理解:对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而每个名字都映射一个值。 每个对象都是基于一个引用类型创建...

    hidogs 评论0 收藏0
  • 理解js对象

    摘要:将构造函数的作用域赋值给新对象因此指向了新对象执行构造函数的代码为这个新对象添加属性返回对象最初是用来标识对象类型的。但提到检测对象类型,还是使用将构造函数当作函数构造函数与其他函数唯一区别。 创建对象 虽然Object构造函数与对象字面量都能创建单个对象, 但这些方式都有明显的缺点: 使用同一个接口创建很多对象, 会产生大量重复代码。 var obj = {}; //对象字面量 va...

    zhouzhou 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<