span {
font-family: 'Consolas';
font-size: 10pt;
color: #ffffff;
}
.sc0 {
}
.sc2 {
color: #c0c0c0;
}
.sc4 {
color: #80ffff;
}
.sc5 {
font-weight: bold;
font-style: italic;
color: #00ffff;
}
.sc6 {
}
.sc10 {
font-weight: bold;
color: #80ffff;
}
.sc11 {
color: #ffff80;
}

1.Objuect 类型 Object 类型是所有对象的基类型,可以用 new 运算符产生一个 Object 类型。 开发者可以通过产生 Object 类型的实例并向其动态添加属性和方法来产生自己需要的 对象。如: var o = new Object(); ECMAScript 要求仅当构造函数需要参数时才需要括号,如果没有参数,括号可以省 略(不推荐这种做法)。如: var o = new Object; //legal, but not recommended 每一个 Object 类型的实例都有如下的属性和方法: constructor--产生对象所使用的函数。 hasOwnProperty(propertyName)--表明给定的属性是否存在于对象的实例而非原 型上,propertyName 必须是一个字符串或字符串类型的变量。 isPrototypeOf(object)--检查对象是否是参数对象实例的原型。 propertyIsEnumerable(propertyName)--表明参数所给定的属性是否可以在 for - in 语句中进行枚举。参数必须是一个字符串或字符串变量。 toLocaleString()--返回一个本地化了的对象的字符串表示。 toString()--返回对象的字符串表示。 valueOf()--返回一个与对象相对应的字符串、数值或布尔值。通常与 toString() 返回的结果是相同的。 因为在 ECMAScript 中,Object 是所有对象的基类型,所以,每一个对象都拥有这些 基本的属性和方法。但是,像 BOM 和 BOM 这些浏览器对象和文档对象,他们的实现与宿 主环境有关,不受 ECMA-262 的制约,他们不一定是直接从 Object 所继承而来。 2.原型(prototype) 每当一个函数产生时,它的 prototype 属性也将根据某些特定的规则产生。默认情况 下,所有的 prototype 自动地获得一个名称为 constructor 的属性,该属性指向以该原 型作为属性的函数。可以用 isPrototypeOf() 方法来判断一个对象(类)是否为某个对 象实例的原型。如: alert(Person.prototype.isPrototypeOf(person1)); alert(Person.prototype.isPrototypeOf(person2)); ECMAScript 5 增加了一个叫做 Object.getPrototypeOf() 的方法,该方法存在于 Object 类型上,可以认为是一个静态方法。该方法用于获得一个对象实例的原型。支 持该方法的浏览器有 IE 9+, Firefox 3.5+, Safari 5+, Opera 12+, and Chrome。 其用法如: alert(Object.getPrototypeOf(person1) == Person.prototype); alert(Object.getPrototypeOf(person1).name); 3.实例属性与原型属性 当一个属性被添加到对象的实例上后,该属性会屏蔽在原型上与之同名的任何属性 (但可以通过实例的 prototype 访问原型上的属性)。对于实例上属性的改变不会影 响到原型上相同名称的属性。 delete 运算符可以删除实例上的属性,使得原型上相应的属性可以被直接访问。 hasOwnProperty() 方法可以判定一个属性是存在于对象的实例上还是原型上。该 方法继承自 Object。仅当属性存在于对象实例上时该方法返回 true,否则,返回 false。如: alert(person1.hasOwnProperty("name")); 4.原型和 in 运算符 in 运算符有两种使用方法:单独使用或在 for - in 循环语句中使用。单独使用 时,如果对象指定名称的属性可以访问,结果就是 true。这意味着,该属性可能存在 于实例上,也可能是存在于原型上。结合 hasOwnProperty() 方法与 in 运算符可以 判定对象的属性是否仅存在于原型上,如: function onlyHasPrototypeProperty(object, name){ return !object.hasOwnProperty(name) && (name in object); } 当在 for - in 语句中使用 in 运算符时,对象所有可访问可枚举的属性都将被 返回,包括实例属性和原型属性。屏蔽原型上不可枚举的实例属性也将被返回,因为 开发者定义的属性都是可枚举的。但在 IE8- 上却是例外。如: var o = { toString : function () { return "My Object"; } }; for (var prop in o) { if (prop == “toString”) { alert("Found toString"); //won’t display in Internet Explorer } } 这使得在 IE8- 上,所有 Object 上的属性和方法都不可以被枚举。 5.对象属性的枚举 ECMAScript 5 提供一个 Object.keys() 方法用于检索对象上所有可枚举的实例 属性。它接受一个对象作为参数,并返回一个字符串数组,包含所有检索到的属性的 名称。如: function Person() { } Person.prototype.name = "Nicholas"; Person.prototype.age = 29; Person.prototype.job = "Software Engineer"; Person.prototype.sayName = function () { alert(this.name); }; var keys = Object.keys(Person.prototype); alert(keys); //”name,age,job,sayName” var p1 = new Person(); p1.name = "Rob"; p1.age = 31; var p1keys = Object.keys(p1); alert(p1keys); //”name,age” getOwnPropertyNames() 方法用于检索对象所有可枚举和不可枚举的实例属性。 var keys = Object.getOwnPropertyNames(Person.prototype); alert(keys); //"constructor,name,age,job,sayName" var keys = Object.getOwnPropertyNames(p1); alert(keys); //"name,age" for (var prop in p1) { alert(prop); //依次输出:name,age,job,sayName } 支持 Object.keys() 和 Object.getOwnPropertyNames() 方法的浏览器有 IE9+, Firefox 4+, Safari 5+, Opera 12+, 和 Chrome。

作者: Cloudy Waterman

水平有限,文中错误不妥在所难免,欢迎批评指正建议评论。文章将不定期修改完善斧正。转载请注明出处,谢谢!

JavaScript 中 Object ,Prototype 相关的属性和方法的更多相关文章

  1. JavaScript中Object.prototype.toString方法的原理

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. ? 1 2 var arr = []; console.lo ...

  2. JavaScript中易混淆的DOM属性及方法对比

    JavaScript中易混淆的DOM属性及方法对比 ParentNode.children VS Node.prototype.childNodes ParentNode.children:该属性继承 ...

  3. JavaScript中的window对象的属性和方法;JavaScript中如何选取文档元素

    一.window对象的属性和方法 ①setTimeout()方法用来实现一个函数在指定毫秒之后运行,该方法返回一个值,这个值可以传递给clearTimeout()用于取消这个函数的执行. ②setIn ...

  4. JS中Object常用的一些属性和方法

    1⃣️属性 刚接触prototype.constructor.proto这三个玩意儿的时候,是不是有点儿傻傻分不清楚的感觉?下面来简单的说下... 举

  5. JavaScript中Object的总结

    基于原型继承,动态对象扩展,闭包,JavaScript已经成为当今世界上最灵活和富有表现力的编程语言之一. 这里有一个很重要的概念需要特别指出:在JavaScript中,包括所有的函数,数组,键值对和 ...

  6. 谈谈javascript中的prototype与继承

    谈谈javascript中的prototype与继承 今天想谈谈javascript中的prototype. 通常来说,javascript中的对象就是一个指向prototype的指针和一个自身的属性 ...

  7. JavaScript中四种不同的属性检测方式比较

    JavaScript中四种不同的属性检测方式比较 1. 用in方法 var o = {x:1}; "x" in o; //true "y" in o; //fa ...

  8. JavaScript中的prototype和__proto__细致解析

    最近在学js,体会了一点点它的灵活性.对于初学者的我,总是被它的灵活感到晕头转向,最近发现了一点东西想与大家分享. JavaScript中的prototype和_proto_: 我们先了解一点js中的 ...

  9. JavaScript -- 时光流逝(四):js中的 Math 对象的属性和方法

    JavaScript -- 知识点回顾篇(四):js中的 Math 对象的属性和方法 1. Math 对象的属性 (1) E :返回算术常量 e,即自然对数的底数(约等于2.718). (2) LN2 ...

随机推荐

  1. Android项目包命名规则是怎样的?

    com.example.app.activity | Activity 类com.example.app.widget | 自定义的小UIcom.example.app.db | 数据库相关操作com ...

  2. 面试题13:在O(1)时间删除链表节点

    注意分情况讨论: 1. 要删除的不是尾节点 2. 链表只有一个节点 3. 链表中有多个节点,删除尾节点 void DeleteNode(ListNode** pListHead, ListNode* ...

  3. js对小数的操作

    1.丢弃小数部分,保留整数部分 js:parseInt(7/2) 2.向上取整,有小数就整数部分加1 js: Math.ceil(7/2) 3,四舍五入. js: Math.round(7/2) 4, ...

  4. LoadRunner函数–lr_vuser_status_message

    http://wenku.baidu.com/link?url=KbKGldKUkam4VyH5Z2doesA0ovQpuwM9nX_SnVMtWjo6rJPxj9DqB51z_m1giMbVo5Db ...

  5. Django 和 html

    下面是对应的形式,自定义的forms

  6. Sublime Text3 配置Python3编译环境

    Sublime Text3 配置Python编译环境 进入Sublime Text3 ,然后选择菜单:工具(T)==>编译系统(U)==>新编译系统... 把上面的代码换成如下代码: &q ...

  7. BZOJ3262陌上花开(三维偏序问题(CDQ分治+树状数组))+CDQ分治基本思想

    emmmm我能怎么说呢 CDQ分治显然我没法写一篇完整的优秀的博客,因为我自己还不是很明白... 因为这玩意的思想实在是太短了: fateice如是说道: 如果说对于一道题目的离线操作,假设有n个操作 ...

  8. 小程序登陆遇到 ERR_REQUEST_PARAM

    小程序测试环境突然登陆不上,返回的错误信息是{}"code":-1,"error":"ERR_REQUEST_PARAM"}. 小程序登陆代 ...

  9. Oracle意外赢官司,程序员或过苦日子

    关于“Google在Android平台使用Java侵犯知识产权”一案,2014年5月,联邦法院判定Oracle获胜,这个结果完全出人意料,因为这样一来无异于打开了软件开发领域中API使用方式的潘多拉之 ...

  10. 密码嗅探工具dsniff

    密码嗅探工具dsniff   网络大量的服务都使用密码方式对使用者身份进行认证.如果使用非加密的方式传输,一旦数据被截获,就容易被嗅探到.Kali Linux预置了一款专用的密码嗅探工具dsniff. ...