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. 【58沈剑架构系列】lvs为何不能完全替代DNS轮询

    上一篇文章“一分钟了解负载均衡的一切”引起了不少同学的关注,评论中大家争论的比较多的一个技术点是接入层负载均衡技术,部分同学持这样的观点: 1)nginx前端加入lvs和keepalived可以替代“ ...

  2. logstash通过redis收集日志

    (1)部署redis 1丶安装redis yum install epel-release -y yum install redis -y 2丶修改配置文件 #vim /etc/redis.conf ...

  3. ubuntu16.04 内核源码编译

    1)下载 首先看一下自己的内核版本 apt-cache search linux-source下载内核代码:sudo apt-get install linux-source-4.10.0 2)解压: ...

  4. Java Language Keywords

    Java Language Keywords 典型题目 true.false.null.sizeof.goto.synchronized 哪些是Java关键字?(goto.synchronized) ...

  5. Java 单例模式的七种写法

    Java 单例模式的七种写法 第一种(懒汉,线程不安全) public class Singleton { private static Singleton instance; private Sin ...

  6. java.lang.ClassCastException: android.widget.ImageButton异常处理

    在调程序时总是出现异常关闭的现象,log显示: 03-26 07:58:09.528: E/AndroidRuntime(398): Caused by: java.lang.ClassCastExc ...

  7. 长安大学第四届ACM-ICPC“迎新杯”程序设计竞赛-重现赛 F - 打铁的箱子

    题目描述 作为彩虹岛上最擅长打铁的人,

  8. HDU 6183 Color it

    线段树. 假设只有一种颜色,因为每次询问有一个$x$一定是$1$,那么我可以想办法找出每一个$y$最小的$x$是多少,如果最小的都不符合,那么一定不符合,因为更新变成了单点更新,询问是区间询问最小值, ...

  9. 如何安装及使用PuTTY

    http://www.ytyzx.net/index.php?title=%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85%E5%8F%8A%E4%BD%BF%E7%94%A8 ...

  10. Python 2.7.x 和 3.x 版本的语法区别

    <__future__模块> Python 3.x引入了一些与Python 2不兼容的关键字和特性,在Python 2中,可以通过内置的__future__模块导入这些新内容.如果你希望在 ...