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>
原型属性
原型属性是再实例对象创建之初就设置好的,通过对象直接量创建的对象使用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>
相关文章推荐
- javascript显示年月日时间代码
- JS使用post提交的两种方式
- JSP response.sendRedirect不跳转的原因分析及解决
- 深入浅出JS的封装与继承
- js刷新页面方法大全
- javascript权威指南学习笔记-严格模式(六)
- JavaScript测试工具之Karma-Jasmine的安装和使用详解
- Jni string空串跨模块使用崩溃注意事项
- 五种js判断是否为整数类型方式
- js 模拟点击事件
- js 修改z-index的值
- JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
- JSP文件是否有必要放在WEB-INF下
- 【JSP中使用Jfreechart绘制折线、饼图和柱状图】
- C# MVC 中给js传对象的问题
- EL表达式使用方法(在jsp中使用)
- <html5+css3+js>事件触发js代码的不同方式
- 使用Gruntjs打包js
- C# DateTime转Json汇总
- 关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态