js深入学习-js prototype constructor属性区别

在很多js 插件中出现这两个属性的频率很高,我自己写插件时,也用到过,知道用,不知道具体的区别,今天研究了下,

constructor 返回的是对象(类型的实例)的构造函数,通过prototype 添加的属性和方法不会返回。

prototype 返回的是类型的原型,不会饭后构造函数部分。

实例如下:

 <html>
<head>
<script type="text/javascript">
   var cat=function (name,sex){
      this.name=name;
      this.sex=sex;
      this.print=function(){
        console.log("name:"+name+"  \r\n sex:"+sex);
       }

     }
  cat.prototype.color="red";
  cat.prototype.printColor=function(){
  console.log("color:"+this.color+"\r\n name"+this.name);
   }
  var myCat=new cat("cavent","boy");
</script >
</head>
<body>
<h1 id="object">js prototype属性和constructor属性</h1>
</body>
</html>

在谷歌浏览器中的控制台,输入myCat.constructor ,显示如下

function (name,sex){
      this.name=name;
      this.sex=sex;
      this.print=function(){
        console.log("name:"+name+"  \r\n sex:"+sex);
       }

     } 

输入cat.prototype 显示如下:

Object {color: "red", printColor: function}
color: "red"
constructor: function (name,sex){
printColor: function (){
arguments: null
caller: null
length: 0
name: ""
prototype: Object
__proto__: function Empty() {}
<function scope>
__proto__: Object

截图如下:

时间: 2024-12-24 14:01:23

js深入学习-js prototype constructor属性区别的相关文章

JS 中 讨厌的 prototype constructor _pro_ 理解

这几天一直在看着块,哎,看的人头都大了,差不多明白了,总结一下. prototype:创建的每一个函数都有一个prototype属性,这个属性指向一个prototype对象.即他是通过构造函数而创建的实例对象的原型对象(属性存在于构造函数中). constructor:这个属性在原型对象中,指向函数中的prototype属性.(存在于原型对象中,原型对象===原型) _proto_:这个属相存在于实例中,指向原型. 举个栗子: function ljd(){ this.name="ljd&quo

js中__proto__, property, prototype, 对象自身属性方法和原型中的属性方法的区别

__proto__: 这个属性是实例对象的属性,每个实例对象都有一个__proto__属性,这个属性指向实例化该实例的构造函数的原型对象(prototype). proterty:这个方法是对象的属性.(据说和一个对象的attr类似,比如dom对象中) prototype:每个构造函数都有一个prototype对象,这个对象指向该构造函数的原型. 对象自身属性方法和原型中的属性方法的区别: 对象自身的属性和方法只对该对象有效,而原型链中的属性方法对所有实例有效. 例子: function bas

js中__proto__和prototype的区别和联系

作者:苏墨橘来源:知乎 备注:本篇文章比较清楚的解释了__proto__属性.prototype.instanceof,秉持一贯风格,好文收藏,贴在这里供大家学习. __proto__(隐式原型)与prototype(显式原型) 1.是什么 显式原型 explicit prototype property: 每一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向函数的原型对象.Note:通过Function.prototype.bind方法构造出来的函数是个例外,它没有pro

js的proto和prototype区别

一.所有构造器/函数的__proto__都指向Function.prototype,它是一个空函数(Empty function) 1 2 3 4 5 6 7 8 9 Number.__proto__ === Function.prototype  // true Boolean.__proto__ === Function.prototype // true String.__proto__ === Function.prototype  // true Object.__proto__ ==

js公有、私有、静态属性和方法的区别

现下,javascript大行其道,对于网站开发人员来说,javascript是必需掌据的一门语言,但随着jquery等框架的流行和使用,许多人 对于原生javascript缺乏深入的理解,习惯了函数式的编辑风格,对于闭包.原型总是说不清道不明.对于js面向对象蹩脚的用着,而要了解js面向 对象,就必需先了解js中什么是公有方法.特权方法.静态方法 公有属性和公有方法 function User(name,age){ this.name = name;//公有属性 this.age = age;

js中__proto__和prototype的区别和关系?

_proto__(隐式原型)与prototype(显式原型) 1.是什么 显式原型 explicit prototype property: 每一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向函数的原型对象.Note:通过Function.prototype.bind方法构造出来的函数是个例外,它没有prototype属性.(感谢 @陈禹鲁 同学的答案让我知道这一点) NOTE Function objects created using Function.prototy

Js prototype constructor __proto__ Function Object 关系图

constructor 及 prototype皆为对象下属性,  该属性保存着所指对象在内存中地址  ( 指向内存中 一个具体对象 ) 1.首先牢记一个概念 在js中一切皆为对象 eg: Number 为一个对象(函数对象) 该对象有 constructor 属性 该属性保存了Function函数对象在内存中的物理地址, constructor属性指向Function函数对象 Number 为一个对象(函数对象) 该对象有 prototype   属性 该属性保存了Number 原型对象在内存中

[Ext JS 4] Extjs 之 initComponent 和 constructor的区别

initComponent 和 constructor是什么 Extjs 提供的组件还是挺丰富的, 但是有时候需求更丰富. 当Extjs 原生的组件无法实现我们的要求的时候, 就需要扩展Extjs 的组件实现自制组件了. 除了这种使用状况, 有时候对于一些相同却有使用很多的配置, 可能像把它独立出来,单独设为一种组件供大家调用, 节省开发时间和提高代码重用度. initComponent 和 constructor 就是Extjs 提供用来实现继承和扩展的方式. Ext.define 实现扩展

js面向对象编程: js类定义函数时prototype和this区别?

在面向对象编写js脚本时,定义实例方法主要有两种 如下: function ListCommon2(afirst) { var first=afirst; this.do1=function () { alert("first do"+first); } } ListCommon2.prototype.do2=function() { // alert("first do"+first);//会出错,不能访问first this.do1(); } this.do1=