2016-12-30 5 views
-1

только первый способ создания объекта в javascript позволяет мне создавать из него новый объект. второй и третий способ создания объекта бросают ошибку может кто-то сказать мне, почему это происходит. и дайте мне знать, какую ошибку я делаю в коде.создание нового объекта из другого

'use strict' 

// First Way for creating object 
var log = function(){ 
    this.name = 'nitesh', 
    this.lastName = 'Yadav', 
    this.age = '21' 
} 
Object.defineProperty(log,'name',{ 
    enumerable: false, 
    writable: false, 
    configurable: false 
}) 
var for = new log(); ***// Works fine*** 
console.log(foo.name); // nitesh 

// Second Way for creating object 

var log2 = { 
    name: 'nitesh', 
    lastname: 'yadav', 
    age: '21' 
} 
var foo2 = new log2; ***//Not working*** 
console.log(foo2.name) // Result error Why??? 

// third Way for creating object 

var log3 = Object.create(Object.prototype,{ 
    name:{ 
     value: 'nitesh', 
     enumerable: true, 
     writable: true, 
     configurable: true 
    }, 
    age: { 
     value: '21', 
     enumerable: true, 
     writable: true, 
     configurable: true 
    } 
}) 

var foo3 = new log3; ***//Not working*** 
console.log(foo3.name) // Result error Why??? 
+0

var for = new log(); будет генерировать исключение, потому что 'for' это зарезервированное слово, и вы не можете использовать его как имя переменной – degr

+0

' Object.create' - создать новый объект, а не класс. Вы не можете вызывать 'new log3', потому что это не класс (а не конструктор). – degr

+0

Именование должно быть переделано. Начните с этого! – mnemosdev

ответ

0

Первый случай создает «класс», и вы можете сделать столько объектов, сколько хотите.

Во втором и третьем случаях вы сами создаете объекты, и вы просто не можете создать объект из объекта. Вы можете использовать их сразу после создания:

// Second Way for creating object 

var log2 = { 
    name: 'nitesh', 
    lastname: 'yadav', 
    age: '21' 
} 
// var foo2 = new log2; // This line is not needed 
console.log(log2.name) // No Error 

// third Way for creating object 

var log3 = Object.create(Object.prototype,{ 
    name:{ 
     value: 'nitesh', 
     enumerable: true, 
     writable: true, 
     configurable: true 
    }, 
    age: { 
     value: '21', 
     enumerable: true, 
     writable: true, 
     configurable: true 
    } 
}) 

//var foo3 = new log3; // This line is not needed 
console.log(foo3.log3) // No Error