我正在創建一個小的庫來與MongoLab HTTP API進行交互,但我遇到了一些問題。我正在使用CommonJS模塊。通過原型方法設置對象的屬性
我有一個模型對象,由表現爲原型的其他車型:
module.exports = {
//[...]
//this will be overriden by the other models
fields: ['id'],
setFields: function(values) {
_.each(this.fields, function(field) {
this[field] = values[field]
})
}
}
我有,例如,一個用戶模式:
var Model = require('models/Model')
function User (properties) {
this.fields = [
'id',
'name',
'surname',
'email',
'password'
]
this.setFields(properties)
//[...]
}
在那裏,setFields()
通話正確地工作,遍歷用戶模型中給出的五個字段中的每一個;儘管它不會設置用戶屬性。如果我在setFields()
定義結束前添加console.log(this.name)
,它會給我undefined
。我需要解決該問題的唯一方法是將this
對象作爲參數傳遞給setFields
方法,並使用參數而不是this
。
它對我來說看起來像是一個範圍問題,但對於JavaScript OO我還是很新的,所以......我的邏輯有什麼問題?
哦,我[Underscore.js的每個方法(HTTP:/ /underscorejs.org/#each)。 – igorsantos07
您將需要顯示更多代碼。例如,根據顯示的代碼,'User'和'Model'之間沒有連接。另外,如何創建'User'的實例?分享更多的代碼。 –