JavaScript基础-Object类

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 = {};

参数

nameValuePair1, nameValuePair2, ... nameValuePairN
一对对名称(字符串)与值(任何值),名称与值用冒号(colon)分隔。
value
任何值
3.属性

Object.length
值为1。
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)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()
密封对象以防删除。 5.使用demo

例子:给定 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值