首页 > IT职业 > IT职场 > 随笔随笔关于原型链的一些基础知识
Student.prototype=Object.create(Person.prototype);
Student.prototype.constructor=Student;
一般对象的原型都会指向 Object.prototype。
特例:
并不是所有对象的原型链上都会有 Object.prototype,比如var obj=Object.create(null);
并不是所有函数对象都会有prototype属性,bind 函数(用来给函数绑定this)
获取原型的方式(chrome浏览器):
fun.prototype.__proto__;
fun.prototype.__proto__=== Object.prototype返回true/false来判断
Object.getPrototypeOf(obj)===Object.prototype
通过判断实际传入的参数的个数实现模拟的重载。
function ClassManager(){
ClassManager.prototype.addClass=function(str){
console.log('Class'+str+'added');
return this;
}
}
var manager=new ClassManager();
manager.addClass('ClassA').addClass('ClassB').addClass('ClassC');
//Class:ClassA added
//Class:ClassB added
//Class:ClassC added
js的链式调用实现的核心技术是返回一个对象,这个对象保存了前一个对象的成员变量,成员函数有两个作用
一个是设置或改变成员变量,一个作用是获取成员变量,所以在设置的函数中,需要return this,this指向的
是当前这个对象,获取型的函数不需要返回this!
简单的链式调用:
function A(){}
A.prototype.add = function(s){
console.log(s);
return this; // 返回A的实例,实现链式调用
}
调用基类方法:
function A(name) { this.name = name; }
A.prototype.mm = function(){};
function B(age) {
this.age = age;
A.call(this, name); // 调用基类的方法或属性
}
B.prototype.mm = function(){
A.prototype.mm.apply(this, arguments); // 调用基类的原型方法或属性
……
}
1、对象(暴露所有模块成员)
var mod = {
n: 0,
f: function(){...}
};
2、立即执行函数(无法访问未return的私有变量)
var mod = (function(){
var _n = 0;
var f = function(){...};
return {n:_n, f:f};
})();
3、函数实例(同上)
var mod = new function(){
var _n = 0;
var f = function(){...};
this.n = _n;
this.f = f;
};
```
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1512/viewspace-2808151/ ,如需转载,请注明出处,否则将追究法律责任。