1.概念
在JavaScript中Object是所有对象的父类,这和Java一样,也就是说所有的类继承Object,既所有的对象都继承了Object中拥有的方法。
(需要注意的是:JavaScript中使用原型继承,也就是Object.prototype中的属性和方法才会被之类继承)
2.构造函数
Object
构造函数创建一个对象包装(object wrapper)
// Object initialiser or literal
{ [ nameValuePair1[, nameValuePair2[, ...nameValuePairN] ] ] }
// Called as a constructor
new Object([value])
//或者直接这样
var obt = {};
参数
- 一对对名称(字符串)与值(任何值),名称与值用冒号(colon)分隔。
- 任何值
nameValuePair1, nameValuePair2, ... nameValuePairN
value
- 值为1。
Object.length
Object.prototype
可以为所有 Object 类型的对象添加属性。
(1)Object.prototype.
constructor
返回一个指向创建了该对象原型的函数引用。需要注意的是,该属性的值是那个函数本身,而不是一个包含函数名称的字符串。对于原始值(如1,true
或 "test
"),该属性为只读。
(2)Object.prototype.
hasOwnProperty(prop)
in
运算符不同,该方法会忽略掉那些从原型链上继承到的属性
(3)Object.prototype.isPrototypeOf(object)
测试一个对象是否存在于另一个对象的原型链上。
(4)Object.prototype.
propertyIsEnumerable(prop)
返回一个布尔值,表明指定的属性名是否是当前对象可枚举的自身属性。
(4)Object.prototype.toLocaleString()
方法返回一个该对象的字符串表示。该方法主要用于被本地化相关对象覆盖
(5)Object.prototype.toString()
方法返回一个代表该对象的字符串
-
(6)
- 指定原型对象和属性来创建一个新的对象。
- 给对象添加一个属性并指定该属性的配置。
- 冻结对象:使对象不可删除或修改它的属性。
- 返回对象指定的属性配置。
- 返回一个数组,它包含了指定对象所有的可枚举或不可枚举的属性名。
- 返回指定对象的原型对象。
- 判断对象是否可扩展。
- 判断对象是否已经冻结。
- 判断对象是否已经密封。
- 返回一个数组,包含指定对象的所有自有可遍历属性的名称。
- 阻止对象扩展。
- 密封对象以防删除。 5.使用demo
Object.prototype.valueOf()
Returns the primitive value of the specified object.
4.方法
Object.create()
Object.defineProperty()
Object.freeze()
Object.getOwnPropertyDescriptor()
Object.getOwnPropertyNames()
Object.getPrototypeOf()
Object.isExtensible()
Object.isFrozen()
Object.isSealed()
Object.keys()
Object.preventExtensions()
Object.seal()
例子:给定 undefined
和 null
类型使用 Object
下面的例子将一个空的 Object
对象存到 o
中:
var o = new Object();
var o = new Object(undefined);
var o = new Object(null);
例子:使用 Object
生成布尔对象
下面的例子将Boolean
对象存到 o
中:
// 等价于 o = new Boolean(true);
var o = new Object(true);
// 等价于 o = new Boolean(false);
var o = new Object(Boolean());
Examples
Since Javascript doesn't exactly have sub-class objects, prototype is a useful workaround to make a “base class” object of certain functions that act as objects. For example:
var Person = function() { this.canTalk = true; this.greet = function() { if (this.canTalk) { console.log('Hi, I\'m ' + this.name); } }; }; var Employee = function(name, title) { this.name = name; this.title = title; this.greet = function() { if (this.canTalk) { console.log("Hi, I'm " + this.name + ", the " + this.title); } }; }; Employee.prototype = new Person(); var Customer = function(name) { this.name = name; }; Customer.prototype = new Person(); var Mime = function(name) { this.name = name; this.canTalk = false; }; Mime.prototype = new Person(); var bob = new Employee('Bob', 'Builder'); var joe = new Customer('Joe'); var rg = new Employee('Red Green', 'Handyman'); var mike = new Customer('Mike'); var mime = new Mime('Mime'); bob.greet(); joe.greet(); rg.greet(); mike.greet(); mime.greet();
This will output:
Hi, I'm Bob, the Builder Hi, I'm Joe Hi, I'm Red Green, the Handyman Hi, I'm Mike