前端开发攻城狮

JavaScript 对象Object的理解与使用(一)

2017-12-12  本文已影响0人  未来与传说

关于Object

Object 构造函数为给定值创建一个对象包装器。

如果给定的值是 nullundefined 将会创建并返回一个空对象,否则,将返回一个与给定值对应类型的对象。

当以非构造函数形式被调用时,Object 等同于 new Object()。

Object 实例和Object 原型对象

JavaScript中的几乎所有对象都是Object的实例;
所有对象从Object.prototype继承方法和属性,尽管它们可能被覆盖。例如,其他构造函数的原型将覆盖constructor属性并提供自己的toString()方法。Object原型对象的更改将传播到所有对象,除非受到这些更改的属性和方法将沿原型链进一步覆盖。


Object.prototype

Object.prototype 属性表示 Object 的原型对象。
一个典型的对象 继承了Object.prototype的属性(包括方法) ,尽管这些属性可能被遮蔽(也被称为覆盖)。

拥有的默认属性

  1. Object.prototype.constructor
    特定的函数,用于创建一个对象的原型。
  2. Object.prototype.__proto__
    指向当对象被实例化的时候,用作原型的对象。
  3. Object.prototype.__noSuchMethod__
    当未定义的对象成员被调用作方法的时候,允许定义并执行的函数。

Object.prototype.toString()

示例

function Dog(name,breed,color,sex) {
   this.name=name;
   this.breed=breed;
   this.color=color;
   this.sex=sex;
}
var theDog = new Dog("Gabby","Lab","chocolate","female");

theDog.toString();
// 返回   [object Object]

// 改写toString()

Dog.prototype.toString = function dogToString() {
  var ret = "Dog " + this.name + " is a " + this.sex + " " + this.color + " " + this.breed;
  return ret;
}

// 任何时候在字符串上下文中使用theDog.toString(),JavaScript 都会自动调用 dogToString() 方法(dogToString()可以是一个匿名函数)

变量类型检测

// 需要以 Function.prototype.call() 或者 Function.prototype.apply() 的形式来调用

var toString = Object.prototype.toString;

toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]

//Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]
上一篇下一篇

猜你喜欢

热点阅读