美文网首页前端开发攻城狮
JavaScript 对象Object的理解与使用(一)

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

作者: 未来与传说 | 来源:发表于2017-12-12 21:02 被阅读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()

    • 每个对象都有一个toString()方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用

    • 默认情况下,toString()方法被每个Object对象继承

    • 方法可以被自定义对象覆盖,自定义方法必须返回一个字符串

    示例

    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]
    

    相关文章

      网友评论

        本文标题:JavaScript 对象Object的理解与使用(一)

        本文链接:https://www.haomeiwen.com/subject/rsxoixtx.html