由于Object.create方法不使用构造函数,所以不能用instanceof运算符判断,对象是哪一个构造函数的实例。这时,可以使用下面的isPrototypeOf方法,判读原型是哪一个对象。
4.isPrototypeOf方法
isPrototypeOf方法用来判断一个对象是否是另一个对象的原型。
var o1 = {}; var o2 = Object.create(o1); var o3 = Object.create(o2); o2.isPrototypeOf(o3) // true o1.isPrototypeOf(o3) // true
上面代码表明,只要某个对象处在原型链上,isProtypeOf都返回true。
5.一个简单示例
var ClassDemo = function () { //静态private变量 var private_static_var = 'aaaa'; //静态private方法 var private_static_func = function (key) { return key + private_static_var; } //private方法,关键就是第一参数self要传入this var private_func = function (self, key) { return private_static_func(key + self.id); } var _class = function (id) { //构造函数 this.id = id; //public变量 } //public方法 _class.prototype.public_func = function (key) { return private_func(this, key); } return _class; }(); var a = new ClassDemo('hello world'); alert(a.public_func('world hello'));
没有简单的办法实现private变量和public静态变量/方法,不过封装到这个程度够用了
您可能感兴趣的文章: