javascript构造函数以及原型对象的理解

 更新时间:2017年01月13日 10:28:17   作者:转角那一刻  
本文主要介绍了javascript构造函数以及原型对象的理解。分享了有关它们的实例代码,具有一定的参考价值,下面跟着小编一起来看下吧

以下是一个构造函数的例子

如果是实例方法,不同的实例化,它们引用的地址是不一样的,是唯一的。

//定义一个构造函数
 function People(name,age){
  this.name=name;
  this.age=age;
  this.dothings=function(){
   retrun this.name+this.age;
   }
 }
 var people1 = new People("panda1",25);
 var people2 = new People("panda2",26);
 alert(people1.name==people2.name) //false

 另外一种编写原型对象的方法,通过字面量的方式创建原型对象,这里{}就是对象,是Object,new Object相对于{}

 People.prototype={
 constructor:People //强制指向People
  name:"panda",
  age:25,
  dothings:function(){
   return this.name+this.age;
  }
}
var people = new People();
alert(people.constructor); //function People(){}

使用字面量的方式创新对象,使用constructor属性不会指向实例,而会指向Object。

创建的每一个函数都有一个prototype(原型)属性,也就是一个对象,原型的用途:包含由特定类型的所有实例共享的属性和方法。换句话说就是prototype通过调用构造函数而创建的那个对象的原型对象。

原型对象的好处:让所有对象实例共享它的所包含的属性与方法,不必在构造函数中定义对象信息,而是可以直接将这些添加到原型中。

//声明一个构造函数
 function People(){}
 //在原型添加属性
 People.prototype.name="panda";
 People.prototype.age=25;
 people.prototype.dothings=function(){
  return this.name+this.age;
 }  
 //实例化构造函数
 var people1 = new People();
 var people2 = new People();
 alert(people1.name==perople2.name) //true 因为都是原型里的方法,它们的地址是共享的,大家都来自同一地方。

使用对象实例无法访问到prototype,prototype属性是一个对象,需要访问prototype对象,通过people.__proto__来访问或者使用构造函数名(对象名)People.prototype,但是这个属性在IE浏览器不支持(undefind),__proto__是指向原型对象的一个指针,

另外还有一个constructor属性,这是一个构造属性,获取构造函数本身,作用是:被原型指针定位,得到构造函数本身,也就是对象实例对应原型对象的作用。

判读一个对象是否指向该构造函数的原型对象,可以使用isPrototypeOf方法来测试

People.prototype.isPrototypeOf(people1)  //true

如果实例与原型里同时存在相同的属性,比如例子中的People下的name属性,

var people = new People();
people.name="bear";
alert(people.name); //bear
alert(people1.name); //panda

实例属性并没有重新原型属性,实例的对象采用就近原则。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

相关文章

  • Layui 设置select下拉框自动选中某项的方法

    Layui 设置select下拉框自动选中某项的方法

    今天小编就为大家分享一篇Layui 设置select下拉框自动选中某项的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • JS 加入收藏夹的代码(主流浏览器通用)

    JS 加入收藏夹的代码(主流浏览器通用)

    所有浏览器通用的js添加收藏夹代码,本文整理了多种方法实现加入收藏夹功能,下面为大家详细介绍下实现代码,感兴趣的朋友可以参考下哈
    2013-05-05
  • JS保留小数几种简单方法例子

    JS保留小数几种简单方法例子

    这篇文章主要给大家介绍了关于JS保留小数几种简单方法,在JS中保留小数的方法有很多,可以Math函数或者以字符串形式来进行处理,但在有的时候需要四舍五入,有时候不需要,需要的朋友可以参考下
    2023-10-10
  • 小程序和web画三角形实现解析

    小程序和web画三角形实现解析

    这篇文章主要介绍了小程序和web画三角形实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • js中symbol类型以及symbol的三大应用场景详解

    js中symbol类型以及symbol的三大应用场景详解

    Symbol是ES6新推出的一种基本类型,它表示独一无二的值,它可以接受一个字符串作为参数,带有相同参数的两个Symbol值不相等,这个参数只是表示Symbol值的描述而已,下面这篇文章主要给大家介绍了关于js中symbol类型以及symbol的三大应用场景,需要的朋友可以参考下
    2022-09-09
  • js实现图片轮播切换效果

    js实现图片轮播切换效果

    这篇文章主要为大家详细介绍了js实现图片轮播切换效果,图片自动轮播切换、点击上下键图片切换上下图片等,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • JavaScript实现Tab栏切换特效

    JavaScript实现Tab栏切换特效

    这篇文章主要为大家详细介绍了JavaScript实现Tab栏切换特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • JavaScript中BOM,DOM和事件的用法详解

    JavaScript中BOM,DOM和事件的用法详解

    BOM全称Browser Object Model浏览器对象模型,将浏览器的各个组成部分封装成对象。DOM全称Document Object Model 文档对象模型,将标记语言文档的各个组成部分,封装为对象。本文将详解BOM,DOM和事件的区别于用法,需要的可以参考一下
    2022-06-06
  • 兼容ie ff div 层 打开+关闭+ 拖动+遮罩+移动+动画改变高宽

    兼容ie ff div 层 打开+关闭+ 拖动+遮罩+移动+动画改变高宽

    div层 打开+关闭+ 拖动+遮罩+移动+动画改变高宽的实例js代码
    2008-07-07
  • 使用JS判断是否数字和小数点组合的数字的两中方法比较(isNaN和逐判断)

    使用JS判断是否数字和小数点组合的数字的两中方法比较(isNaN和逐判断)

    使用js判断数字和小数点的方法非常之多。但是就目前而言,我见过最好用的判断方法应该来说是isNaN,它比较方便,而逐个比较的方法有一定的弊端。
    2009-09-09

最新评论