js对象的3个属性


每一个对象都有与之相关的原型(prototype)、类(class)和可扩展性(extensible attribute)。
原型属性
原型属性是再实例对象创建之初就设置好的,通过对象直接量创建的对象使用Object.prototype作为它们的原型。通过new创建的对象使用构造函数的prototype属性作为它们的原型。通过Object.create()创建的对象使用第一个参数(也可以是null)作为它们的原型。
<script type="text/javascript">
  //检测一个对象是否是另一个对象的原型(或处于原型连中)
  var p = {x:1}; //定义一个原型对象
  var o = Object.create(p); //使用这个原型创建一个对象
  p.isPrototypeOf(o); //true:o继承自p
  Object.prototype.isPrototypeOf(o); //true:p继承自Object.prototype
</script>
类属性
对象的类属性(calss attribute)是一个字符串,用以表示对象的类型信息。
<script type="text/javascript">
  function classof(o){
    if(o === null) return "Null";
    if(o === undefined) return "Undefined";
    return Object.prototype.toString.call(o).slice(8,-1);
  }
  classof(null); //"Null"
  classof(1); //"Number"
  classof(" "); //"String"
  classof(false); //"Boolean"
  classof({}); //"Object"
  classof([]); //"Array"
  classof(/./); //"Regexp"
  classof(new Date()); //"Date"
  classof(window); //"Window" 这是客户端宿主对象
  function f(){};//自定义一个构造函数
  classof(new f()); //"Object"
</script>
可扩展性
<script type="text/javascript">
  //通过将对象传入Object.esExtensible(),来判断该对象是否可扩展
  //如果项将对象转换为不可扩展的,需要调用Object.preventExtensions(),将待转换的对象作为参数传进去
  //Object.seal()封闭对象。不能给这个对象添加新属性,而且已有属性也不能删除
  //...
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值