2012-06-15 23 views
34

tôi đang tìm kiếm một cách để thêm các yếu tố mới cho một một đối tượng hiện giống như những gì thúc đẩy thực hiện với mảngThêm yếu tố mới cho một đối tượng hiện

Tôi đã cố gắng này và nó đã không làm việc:

var myFunction = { 
    Author: 'my name ', 
    date: '15-12-2012', 
    doSomething: function(){ 
     alert("helloworld") 
    } 
}; 
myFunction.push({ 
    bookName:'mybook', 
    bookdesc: 'new' 
}); 
console.log(myFunction); 
+3

'myFunction' là một đối tượng. Đối tượng không có phương thức 'push'. (không phải chức năng) –

Trả lời

52

Sử dụng này:

myFunction.bookName = 'mybook'; 
myFunction.bookdesc = 'new'; 

Hoặc, nếu bạn đang sử dụng jQuery:

$(myFunction).extend({ 
    bookName:'mybook', 
    bookdesc: 'new' 
}); 

Phương pháp push là sai vì nó thuộc về các đối tượng Array.prototype.

Để tạo một đối tượng có tên, hãy thử này:

var myObj = function(){ 
    this.property = 'foo'; 
    this.bar = function(){ 
    } 
} 
myObj.prototype.objProp = true; 
var newObj = new myObj(); 
+0

cảm ơn âm thanh tốt, nhưng câu hỏi khác của tôi về cách chúng ta có thể đặt tên cho đối tượng –

+0

Tên gì? Bạn có thể giải thích tốt hơn không? –

+0

khi bạn thực hiện một console.log (yourObject) nó xuất hiện dưới dạng đối tượng được đặt tên như thế nào chúng ta có thể thay đổi tên hiển thị đó? –

2

Bạn có thể sử dụng Extend để thêm đối tượng mới vào đối tượng hiện có.

11

Chỉ cần làm myFunction.foo = "bar" và nó sẽ thêm nó. myFunction là tên của đối tượng trong trường hợp này.

3

Bạn đang tìm kiếm jQuery extend method. Điều này sẽ cho phép bạn thêm các thành viên khác vào đối tượng JS đã được tạo của bạn.

+0

Điều này cũng có sẵn trong lodash: https://lodash.com/docs#isEmpty: _.isEmpty ({'a': 1}); // → false –

4

Cú pháp jQuery được đề cập ở trên bởi Danilo Valente không hoạt động. Nó phải như sau-

$.extend(myFunction,{ 
    bookName:'mybook', 
    bookdesc: 'new' 
}); 
Các vấn đề liên quan