首页 > 编程语言 > 详细

javasript对象与原型

时间:2015-05-27 12:04:50      阅读:201      评论:0      收藏:0      [点我收藏+]

先解释一下原型。每个javascript对象都和另个都行有关联。“另一个”对象就是我们熟知的原型,每一个对象都从原型继承属性。

要理解原型我想应该先把对象理解清楚。

对象

他是javascript的基本数据类型。也可以看做是一个属性的无序集合,每个属性都有一个名/值对。对象的方法通常是继承的属性,这种原型式的继承javasript的核心特征。

每个对象拥有三个相关的对象特性。

  • 对象的原型指向另外一个对象,本对象的属性继承自他自己的原型对象。
  • 对象的类是一个标识对象对象类型的字符串
  • 对象的扩展标记指明了是否可以向该对象添加新属性。

对象的创建可以通过对象直接量,关键字new和object.create()函数三种方法来创建。

对象直接量

 1 var empty={};                                 //没有任何属性的对象
 2 var point={m:0,n:0};                       //两个属性
 3 var point2={m:point.m,n:point.n+1};//更复杂的属性
 4 var book={
 5     "main title":"javascript",            //属性名字里有空格,必须用字符串标示
 6     "sub-title":"the definitive guide",//连字符也是要用字符串标示
 7     "for":"all audiences",                //for是保留字,因此必须用引号
 8     author:{                                 //这个属性的值是一个对象
 9         firstname:"david";           //注意这里的属性名都没有引号
10         surname:"flanagan"
11     }
12 };                                                                   

 

 通过关键字new

1 var a=new Array();         //创建一个空数组
2 var d=new Date();          //创建一个表示当前时间的Date对象
3 var r=new RegExp(“js”); //创建一个可以进行模式匹配的RegExp对象

 通过object.create()创建

它是一个静态函数,而不是提供给某个对象调用的方法。使用他的方法很简单,只需要传入所需的原型对象即可:

1 var 01=Object.create({x:1,y:2});     //01继承了属性x和y
2 var 02=Object.create(null);       //02不继承任何属性和方法

如果想创建一个普通的空对象,需要传入Object.prototype

3 var 03=Object.create(Object.prototype); //03和new Object()一样

接下来我们通过原型继承创建一个新对象

//inherit()返回了一个继承自原型对象P的属性的新对象

function inherit(p){
  if(p==null) throw TypeError();   //  p是一个对象,但是不能为空
  if(Object.create)          //如果Object.create()存在
      return Object.create(p);  //直接使用它
  var t=typeof p;           //否则进一步检测
  if (t!=="object" && t!=="function") throw TypeError();
  function f(){};          //定义一个空的构造函数
  f.prototype=p;            //将其原型属性设置为P
  return new f();            //使用f()创建p的继承对象
}

 

javasript对象与原型

原文:http://www.cnblogs.com/lidongcn/p/4532870.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!