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. 一道关于数据库(经典父子级 ID 关联)更新题,大家帮忙想想还有其它解决思路没有?

    昨天,一同事发过来的一道数据库题目,就是哪种经典的父子级 ID 在同一数据库表中设计类型.需要在原表中添加一个字段,同时,将该节点的父子级详细信息插入到原表新增的一字段中,具体效果如下图. AreaC ...

  2. [实战]MVC5+EF6+MySql企业网盘实战(5)——登录界面,头像等比例压缩

    写在前面 关于该项目,已经很久没更新了.实在是找不到一个好的ui,没办法就在网上找了一个还不错的,就凑合着先用着吧,先出第一版,以后的再想着去优化.最近更新与网盘项目相关的内容是准备在项目中使用一个美 ...

  3. Loadrunner中cookie解释与用法

    loadrunner对于cookie的处理loadrunner中与cookie处理相关的常用函数如下: web_add_cookie():添加新的cookie或者修改已经存在的cookie web_r ...

  4. C# 字符串提取数字

    转自:http://www.cnblogs.com/dolphin-gjh/p/6121792.html 一.使用正则表达式 1 string str = "sztq数字提取123sztq数 ...

  5. pycharm的安装教程及大坑

    在根据网上的教程创建新工程后,发现不能调用第三方库,网上大多给的是print('hello world'),己适python解释器用的pycharm默认的也不能发现错误.后来浏览了一篇文章才恍然大悟, ...

  6. misaka and last order SCU - 4489 (筛法的灵活应用)

    Time Limit: 1000 MS Memory Limit: 131072 K Description Misaka Mikoto is a main character of the Anim ...

  7. 【BZOJ 2806】 2806: [Ctsc2012]Cheat (SAM+二分+DP+单调队列)

    2806: [Ctsc2012]Cheat Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1262  Solved: 643 Description ...

  8. 【BZOJ 2121】 (字符串DP,区间DP)

    2121: 字符串游戏 Description BX正在进行一个字符串游戏,他手上有一个字符串L,以及其他一些字符串的集合S,然后他可以进行以下操作:对于一个在集合S中的字符串p,如果p在L中出现,B ...

  9. [ZOJ3254] MON 9.2009Secret Code

    A^x = D (mod P) 0 <= x <= M, here M is a given integer. 1 <= A, P < 2^31, 0 <= D < ...

  10. [BZOJ1559][JSOI2009]密码(AC自动机)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1559 2009年的省选题虽然比起现在简单了不少,但对我来说还是很有挑战性的. 首先对于这种多串匹配问 ...