您的位置:首页 > Web前端 > JavaScript

js对象的3个属性

2015-12-03 11:22 561 查看
每一个对象都有与之相关的原型(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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: