构造函数、实例和原型的概念和关系

每个函数都属于对象,都会有一个属性叫prototype。这个属性指向一个对象,我们把他叫做当前函数的原型对象。原型对象下面有个属性叫constructor.这个属性指向当前函数。函数又分为普通函数和构造函数。这里我们说一下构造函数。定义一个函数 :

function Person(x, y ) {this.age = x;this.name = y;}var xiaoming= new Person(12, "xiaoming" );

这里创建实例对象 xiaoming的时候就是调用了Person构造函数,使xiaoming有了自己的属性和方法,之后xiaoming和Person也就没有什么直接交集了(可以理解为小明分手了,哎程序员好难╥..╥)但是每个实例对象都会有一个隐藏属性[[prototype]],这个属性在chrome/firefox下叫__proto__,仅仅供学习调试用.它指向的就是构造函数的原型对象。

时间: 2024-10-13 16:32:07

构造函数、实例和原型的概念和关系的相关文章

232 constructor构造函数,构造函数、实例、原型对象的三角关系

1.6 constructor构造函数 对象原型( __proto__)和构造函数原型对象(prototype)里面都有一个属性 constructor 属性 ,constructor 我们称为构造函数,因为`它指回构造函数本身`. `constructor 主要用于记录该对象引用于哪个构造函数,它可以让原型对象重新指向原来的构造函数`. 一般情况下,对象的方法都在构造函数的原型对象中设置.如果有多个对象的方法,我们可以给原型对象采取对象形式赋值,但是这样就会覆盖构造函数原型对象原来的内容,这样

JS原型的动态性及实例与原型的关系

今天再读了<JS高程>的第六章,有了些深入的感悟和理解,总结分享一下. 创建对象的方式有很多,有一种是动态原型模式,最实用的是构造函数与原型组合的模式,原型的动态性在这两个模式里都有所体现,我本人的理解是:前者的“动态”是通过一些判断,看方法是否存在来决定是否对原型进行初始化,同时,在构造函数内部对原型的修改会立即体现在所有的实例中,后者的“动态”是主要是说无论是先创建实例还是先修改原型,对原型对象所做的修改都会立即反应在实例中,针对后者来个栗子(栗子1): function Person()

javascript原型等概念

研究javascript的原型概念两天,看到这篇文章后,终于恍然大悟,里面的图展示了一切!大部分内容转载自:https://segmentfault.com/a/1190000005824449 一切皆为对象 殊不知,JavaScript的世界中的对象,追根溯源来自于一个 null 「一切皆为对象」,这句着实是一手好营销,易记,易上口,印象深刻. 万物初生时,一个null对象,凭空而生,接着Object.Function学着null的模样塑造了自己,并且它们彼此之间喜结连理,提供了prototy

Javascript 构造函数模式、原型模式

前两天写完组合继承,打算总结一下原型继承的,不过今天看了一下工厂模式.构造函数模式和原型模式,觉得有必要总结一下以加深印象. ——————————————————————————————————————————————————————————————————————————————————碎碎念. 1.工厂模式 <Javascript 高级程序设计(第3版)> 用了寥寥十多行介绍了工厂模式.我找了一些相关资料,想确定一下这种模式的具体适用场景和优势.按照资料中的说法,是考虑到 ECMAScri

读书笔记--对象、实例、原型、继承

创建对象的设计模式 工厂模式 抽象了创建具体对象的过程,用函数封装以特定接口创建对象的细节 解决了创建多个相似对象的问题,没有解决对象识别的问题 function createPerson(name,age){ var obj = new Object(); obj.name = name; obj.age = age; obj.sayName = function(){ alert(this.name) } return obj; } var person = createPerson('aa

js - 创建对象的几种方式(工厂模式、构造函数模式、原型模式)

原文引用https://www.dazhuanlan.com/2019/08/26/5d62f8b594f10/ 工厂模式 做法:内部创建一个对象,并未对象属性赋值并且返回 缺点:解决创建多个相识对象的问题,但不能识别创建的对象的类型 构造函数模式 做法:直接将属性和方法赋值给 this 对象,没有 return 语句 缺点:对象不是共用方法和属性,每 new 一次对象就要创建一个内存,超出性能消耗 原型模式 做法:通过 prototype 为对象添加属性 缺点:每个实例都共享属性方法,实例中修

构造函数模式和原型模式的组合使用

原型虽然在某种程度上带来很大方便,但也存在一些问题,其问题是由它共享的本质所导致的. 我们知道,原型中的属性是可以被实例共享的,这种共享对于函数非常合适不过,但对于属性就要另当别论了.如果如果属性的值为基本类型数据,其共享的特点也能说得过去,而属性的值为引用数据类型时,问题就很明显,比如下面的例子. function P(){ }; P.prototype={ name:“张三”: friends:["Tom","Jerry"] }; var p1 = new P(

JS创建对象模式及其对象原型链探究(五):组合使用构造函数模式和原型模式

组合使用构造函数模式和原型模式 构造函数模式用于定义实例属性,原型模式用于定义方法和共享的属性. 创建自定义类型的最常见方式,就是组合使用构造函数模式和原型模式. 1.创建对象 // 组合使用构造函数模式和原型模式 function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.friend = ["Jenny", "Court"]; } Person.p

面向对象JS基础讲解,工厂模式、构造函数模式、原型模式、混合模式、动态原型模式

什么是面向对象?面向对象是一种思想!(废话). 面向对象可以把程序中的关键模块都视为对象,而模块拥有属性及方法.这样我们如果把一些属性及方法封装起来,日后使用将非常方便,也可以避免繁琐重复的工作.接下来将为大家讲解在JS中面向对象的实现. 工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,而由于在ECMAScript中无法创建类,因此用函数封装以特定接口创建对象.其实现方法非常简单,也就是在函数内创建一个对象,给对象赋予属性及方法再将对象返回即可. function createBlog(