实例、构造函数、构造函数的原型

上代码:

  function Foo(){} //构造函数
  var a = new Foo(); //实例
  console.log(Foo===Foo.prototype.constructor); //true
  console.log(a.constructor===Foo); //true
  console.log(Foo.prototype===Foo.prototype); //true
  console.log(a.__proto__===Foo.prototype); //true

1.constructor

【实例的构造函数的原型】的constructor,和【实例】的constructor。都指向【构造函数】

2.非标准__proto__(标准Object.getPrototypeOf())

__proto__拿到的是实例的构造函数的原型

foo.constructor.prototype == foo.__proto__
// true
Foo.prototype == foo.__proto__
// true
时间: 2024-10-09 01:16:00

实例、构造函数、构造函数的原型的相关文章

浅析JS原型对象&实例对象&构造函数(转)

浅析原型对象,实例对象,构造函数的关系 原文地址:JS面向对象-原型对象,实例对象,构造函数的关系(http://blog.csdn.net/u014205965/article/details/45798861) 因为最根上的object拥有一个prototype属性,而js中所有的对象又都继承自object,所以js中所有的对象都拥有一个prototype属性,而在js中函数也是对象,所以js中每个函数也都有一个prototype属性. 例如:function Person(){...} 和

JS 之原型,实例,构造函数之间的关系

JS是面向对象的语言,函数也是对象.下面大致介绍下实例,原型与构造函数之间的关系. 构造函数模式 function Person(name,age){ this.name = name; this.age = age; this.sayname = function(){ alert(this.name); } } 定义构造函数,函数名字首字母大写,并使用new操作符实例化构造函数.构造函数本身也是函数,只不过可以用来创建对象.构造函数的特点是: 1.没有显式的创建对象 2.将属性和方法赋给力t

构造函数、原型对象、实例、隐式原型的理解

(欢迎一起探讨,如果有什么地方写的不准确或是不正确也欢迎大家指点,最后留了一个疑问,欢迎各位大神来探讨~) PS: 内容中的__proto__可能会被markdown语法导致显示为proto. 建议将构造函数中的方法都定义到构造函数的原型中,由该构造函数创建的实例的方法都会指向同一个方法.(在内部声明的话,每创建一个实例都会重新实例化函数,每个实例中的函数的指向是不同的:如果定义在全局中,且有很多方法,这样毫无封装性可言.) 一.属性和方法 构造函数可以定义三种属性和方法: 对象属性/对象方法:

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

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

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

原型虽然在某种程度上带来很大方便,但也存在一些问题,其问题是由它共享的本质所导致的. 我们知道,原型中的属性是可以被实例共享的,这种共享对于函数非常合适不过,但对于属性就要另当别论了.如果如果属性的值为基本类型数据,其共享的特点也能说得过去,而属性的值为引用数据类型时,问题就很明显,比如下面的例子. 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(

JS面向对象(1)——构造函数模式和原型模式

1.构造函数模式 构造函数用来创建特定的类型的对象.如下所示: function Person(name,age,job){ this.name=name; this.job=job; this.age=age; this.sayName=function(){ alert(this.name); }; } var person1=new Person('nick',20,'student');var person2=new Person('nick',20,'student');alert(p

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

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