1. 程式人生 > >js prototype 原型

js prototype 原型

color function 方法 使用方法 prototype per TE person 指定

  //https://xxxgitone.github.io/2017/06/10/JavaScript%E5%88%9B%E5%BB%BA%E5%AF%B9%E8%B1%A1%E7%9A%84%E4%B8%83%E7%A7%8D%E6%96%B9%E5%BC%8F/  出處
        function Person() {

        }
        Person.prototype.name = ‘jiang‘;   //為對象 添加屬性和方法
        var person1 = new Person();
        var person2 = new Person();
        console.log(person1.name) 
//jiang console.log(person2.name) // jiang // console.log(Object.getPrototypeOf(person1)); //輸出指定對象原型 // console.log(Person.prototype); //輸出原型 //function Person() { //} //var person1 = new Person(); //console.log(person1.proto === Person.prototype) // true 對象的proto屬性 指向函數原型
//person1 instanceof Person // true instanceof操作符處理對象和函數之間的關系 //Person.prototype.isPrototypeOf(person1) // true 指向調用此方法的對象 返回true 調用通過原型添加的屬性或方法 //Person.prototype.isPrototypeOf(person2) // true //Object.getPrototypeOf(person1) === Person.prototype // true // 獲取對象原型 //
function Person() { //} //Person.prototype.constructor === Person // true //這個屬性其實就是將原型對象指向關聯的構造函數 //function Person() { //} //var person1 = new Person() //person1.constructor === Person // true //那豈不是實例person1也有.constructor屬性,其實沒有,通過原型鏈在原型Person.prtototype上面找到的 function Person() { } // 原型屬性 Person.prototype.name = ‘Jiang‘; var person1 = new Person() // 實例屬性 person1.name = ‘J‘; console.log(person1.name) // J //如果在實例屬性上沒有找到的話,就會在實例的原型上去找,如果原型上還沒有,就繼續到原型的原型上去找,直到盡頭 Object.prototype function Person() { } // 原型屬性 Person.prototype.name = ‘Jiang‘; var person1 = new Person() console.log(person1.name) // Jiang //上面代碼中person1實例並沒有name屬性,但仍然可以輸出值,就是在原型上找到的 function Person() { } var person1 = new Person() // 實例屬性 person1.name = ‘j‘; person1.hasOwnProperty(‘name‘) // true //使用方法hasOwnProperty,屬性只有存在於實例中才會返回true function Person() { } Person.prototype.age = ‘100‘; var person1 = new Person() person1.name = ‘j‘; ‘name‘ in person1 // true ‘age‘ in person1 // true //前面提到hasOwnProperty方法可用於檢測屬性是否是實例屬性,in則會遍歷所有屬性,不管是實例上的,還是原型上的 //in操作符有兩種使用方式,單獨使用和在for - in循環中使用, 先上基礎代碼 //fon-in, 會遍歷所有能夠通過對象訪問的、可枚舉的(enumerated)屬性,不管是實例上,還是原型上 for (var prop in person1) { console.log(prop) // name age } //Object.keys() 此方法可以獲取對象的所有可枚舉的屬性的名字 var keys = Object.keys(person1) console.log(keys) // ["name"] var keys = Object.keys(Person.prototype) console.log(keys) // ["age"] //原型對象Person.prototype的原型就是Object.prototype

js prototype 原型