Chr*_*ski 0 javascript mongoose node.js
这是一个难以理解的问题,但是如何让Model.method()和Model()同时有效?让我问这个的特定库是mongoose(http://mongoosejs.com/docs/)其中Model作为对象表示mongo集合并且有几个方法而Model作为函数是mongo文档的构造函数,带有一些方法.我正在尝试做类似的事情,但它只返回一个函数制作typeof Model === 'function'而从不反对.它如下:
let model = (function(){
for(var i in queries){
if(typeof i == 'function'){
if(i == 'insert'){
continue;
}
this[i] = function(){
queries[i].apply(this, arguments); // queries is a separate module I've written that has methods for querying a DB
};
}
}
return (function(){
for(var i in arguments[0]){
if(!(i in schema) && typeof arguments[0][i] != typeof schema[i]){
this[i] = arguments[0][i];
}
else{
throw new Error('Invalid argument, key: ' + i + ' value: ' + arguments[0][i]);
}
}
for(var i in schema.methods){
this[i] = schema.methods[i];
}
});
})();
Run Code Online (Sandbox Code Playgroud)
所有JavaScript函数都是对象.这就是JavaScript的工作原理.
function alert(message) {
document.body.appendChild(document.createTextNode(message));
document.body.appendChild(document.createElement('br'));
}
function myFunction() {
alert("This is myFunction");
}
myFunction.property = "Hello";
myFunction.recursive = myFunction;
myFunction();
alert(myFunction.property);
alert(myFunction.name);
myFunction.recursive.recursive.recursive.recursive.recursive();Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |