zoukankan      html  css  js  c++  java
  • JavaScript对象 原型

    javascript对象就是一组数据和功能的集合,除原始类型(string、number、boolean、null、undefined)之外,其余都是对象。 可以通过对象直接量(字面量)、new、和Object.create()(ECMAScript5)来创建对象。

            //new
            var person = new Object();
            person.name = "YuanSong";
            person.age = 28;
            //对象字面量
          var person = {
                name : "YuanSong",
                age : 28
            };
           //Object.create()
           var person = Object.create({name : "YuanSong",
                age : 28});
           //{}
           var person = {};
           person.name = "YuanSong";
           person.age = 28;

    原型

    每一个JavaScript对象(null除外)都有原型,每一个对象都从原型继承属性。

    所有通过对象字面量创建的对象都具有同一个原型对象,可以通过Object.prototype获得对原型对象的引用。

            var person = {
                name : "YuanSong",
                age : 28
            };
    
            alert(Object.prototype.isPrototypeOf(person));           //true
            alert(Object.getPrototypeOf(person)==Object.prototype);  //true

    通过关键字new和构造函数调用创建的对象的原型就是构造函数的prototype属性的值。

    var dt=new Date();
    alert(Date.prototype.isPrototypeOf(dt)); //true
    alert(Object.getPrototypeOf(dt)==Date.prototype); //true
            function Person(){
            }
            
            Person.prototype.name = "YuanSong";
            Person.prototype.age = 28;
            Person.prototype.job = "Software Engineer";
            Person.prototype.sayName = function(){
                alert(this.name);
            };
            
            var person1 = new Person();
            var person2 = new Person();
    
    
            alert(Object.getPrototypeOf(person1)==Person.prototype);//true
            alert(Object.getPrototypeOf(person1).name);//YuanSong from prototype
            
            person1.name = "YuenSung";
            alert(person1.name);   //"YuenSung" from instance
            alert(person2.name);   //"YuanSong" from prototype

    对实例对象属性的访问,首先读取实例对象的属性,如果没有在实例上发现该属性,则读取原型的属性,当为实例添加一个属性时,就会屏蔽原型对象中保存的同名属性,阻止访问原型中的那个属性,但不会修改原型的那个属性。

    对象具有属性和方法,javascript中Object类型的实例都具有都具有以下属性和方法。
    1 constructor:构造函数,保存着用于创建当前对象的函数(对于上面,Object())。

    2 hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中是否存在(对于上面,person.hasOwnProperty("name"))。

    3 isPrototypeOf(object):用于检查对象是否是传入对象的原型(对于上面,Object.prototype.isPrototypeOf(person))。

    4 propertyIsEnumerable(propertyName):用于检查给定的属性能否使用for-in来枚举(对于上面,person.propertyIsEnumerable("name"))。

    5 toLocalString():返回对象的字符串表示,与执行环境地区对应。

    6 toString(): 放回对象的字符串表示。

    7 valueOf():返回对象的字符串、数值或布尔值表示,通常与toString()方法返回值相同。

    8 toJSON():JSON.stringify(person)=>"{"name":"yuansong","age":28}"

  • 相关阅读:
    【UVa#10325】The Lottery
    【洛谷P1868】饥饿的奶牛
    【NOI2005】维护数列
    【NOIP2018】保卫王国
    【洛谷P4719】动态dp
    【NOI2014】魔法森林
    【洛谷P4234】最小差值生成树
    【国家集训队】Tree II
    面试1
    struts2中的方法的调用
  • 原文地址:https://www.cnblogs.com/YuanSong/p/3898060.html
Copyright © 2011-2022 走看看