谈谈JS中的原型

不知道大家对JS中的原型理解的怎么样,我想如果大家对JS中的原型对象以及prototype属性十分熟悉的话对后面原型链以及继承的理解会十分的容易,这里想和大家分享自己对其的理解,请先看下面这段代码O(∩_∩)O~~

 1  function Person(){
 2 }
 3 Person.prototype.name = "jingzi";
 4 Person.prototype.age = 20;
 5 Person.prototype.sayName = function(){
 6    alert(this.name);
 7 };
 8
 9 var person1 = new Person();
10 person1.sayName();    //"jingzi"

这是利用原型模式创建的对象,代码很短,不是很难理解,如果因为prototype存在疑惑,请向下继续看

    大家请先忽略这张丑陋的图解(。?_?。)?。这可是理解问题的关键奥~,步入正文。。。。

    每个函数被创建的时候都会有一个prototye属性,这个属性会指向函数的原型对象。默认情况下每个原型对象又都会获取一个constructor属性,这个属性包含一个指向prototype属性所在函数的指针。

   如上所示,创建了一个Person函数,它就会拥有一个prototype属性,这个属性指向了Person Prototype原型对象,而这个原型对象拥有一个constructor属性,其指针指向了Person,即prototype属性所在的函数Person.当你创建一个对象实例的时候,就会拥有一个prototype属性(因为每个函数被创建的时候都会有一个prototype属性呀\(^o^)/)。这个prototype属性会指向其原型对象而不是直接指向其构造函数Person。

   这里需要记住实例对象是通过原型对象与构造函数取得联系的。

   不知道这里你是否对原型对象有了一个初步的理解,不知道自己对其的理解是否正确,如果理解存在偏差,请大家狠狠地戳下面( ^_^ )。之后大家是不是会想什么是原型链呢?????嘿嘿,明天("明天")继续。。。。

时间: 2024-08-02 15:12:56

谈谈JS中的原型的相关文章

谈谈JS中的面向对象

请先看看下面这段代 1 <script src="jquery.js"></script> 2 <script type="text/javascript"> 3 /** 4 * Object.create() 最近才添加进了ECMAScript第5版规范,有些浏览器不支持 5 * 这里模拟一个Object.create方法解决兼容性问题 6 * Object.create : 该方法只有一个参数,即原型对象,返回一个新对象 7

js中的原型、继承的一些想法

最近看到一个别人写的js类库,突然对js中的原型及继承产生了一些想法,之前也看过其中的一些内容,但是总不是很清晰,这几天利用空闲时间,对这块理解了一下,感觉还是有不通之处,思路上没那么条理,仅作为分享, 一.instanceof 在JavaScript有instanceof运算符,是二元运算符,使用方法 instanceA instanceof A,返回值是布尔值(boolean),含义是判断instanceA是否是A的一个实例,其实质是判断A.prototype===instanceA.__p

js中的原型与原型链详解

js中的原型与原型链详解 记住下面三句话就可以理解原型: 所有的函数数据类型都天生自带一个属性Prototype(原型)这个属性的值是一个对象,浏览器会默认给他开辟一个堆内存 在浏览器给prototype开辟的堆内存当中有一个天生自带的属性是constructor,这个属性存储的值是当前函数本身 每一个对象都有一个__proto__的属性,这个属性指向当前实例所属类的prototype(如果不能确定他是谁的实例,都是Object的实例) 原型链:如果引用构造函数的实例想要查找某个属性p的话: 首

谈谈 js中的几种模式 (一)

今天看了<JavaScript 高级程序设计>(第三版)这本书,颇有收获,总想写点什么,只恨自己菜鸟一只写不出什么真知灼见,只能......好了废话不多说,开篇了. 大家都知道在js中可以用Object构造函数和对象字面量这 //利用Object构造函数创建对象 var person=new Object(); person.name="DJL"; person.age=22; //利用对象字面量创建对象 var person2={ name:"DJL"

简单谈谈js中的MVC

MVC是什么? MVC是一种架构模式,它将应用抽象为3个部分:模型(数据).视图.控制器(分发器). 本文将用一个经典的例子todoList来展开(代码在最后). 一个事件发生的过程(通信单向流动): 1.用户在视图 V 上与应用程序交互 2.控制器 C 触发相应的事件,要求模型 M 改变状态(读写数据) 3.模型 M 将数据发送到视图 V ,更新数据,展现给用户 在js的传统开发模式中,大多基于事件驱动的: 1.hash驱动 2.DOM事件,用来驱动视图 3.模型事件(业务模型事件和数据模型事

js中的原型prototype

var arr1 = new Array(12,34,98,43,38,79,56,1); arr1.sum=function (){ var result = 0; for(var i=0; i<this.length; i++){ result += this[i]; } return result; }; alert(arr1.sum()); 如果现在还有个arr1 对象也要求和 var arr2 = new Array(54,29,1,10); 那么还要给 arr2再添加一个求个的方法

谈谈js中for in 需要注意的地方

js中for in 可以遍历对象或数组的显性属性,也就是说我们自己定义的属性是可以遍历的,那些原型上默认已有的属性,例如:Object.prototype.toString.Object.prototype.hasOwnProperty 是遍历不出来的. for in 的基本规则如上,不过还有“坑”的地方需要我们注意: 1.for in循环出的值不一定是按顺序的.代码如下: var b = {3:1,42:2,11:3} for( var key in b ){ alert( b[key] )

JS中的原型继承机制

转载 http://blog.csdn.net/niuyongjie/article/details/4810835 在学习JS的面向对象过程中,一直对constructor与prototype感到很迷惑,看了一些博客与书籍,觉得自己弄明白了,现在记录如下: 我们都知道,在JS中有一个function的东西.一般人们叫它函数.比如下面的代码 js代码: [javascript] view plaincopy function Person(name) { alert(name); } Perso

JS中的原型--Prototypes

一.对象中的原型_proto_ JavaScript中的对象是基于原型的.原型是其他对象的基础,它定义并实现了一个新创建的对象必须包含的成员列表.原型对象为所有对象实例所共享. 对象通过一个内部属性绑定到它的原型.在FireFox.Safari.和Chrome浏览器中,这个属性_proto_对开发者可见.一旦你创建一个内置对象(比如Object和Array)的实例,它们就会自动拥有一个Object实例作为原型. 因此,对象可以拥有两种成员类型:实例成员和原型成员.实例成员直接存于对象实例中,原型