继承的两种方式,对象冒充和原型方式,就是不理解? 继承的两种方式,对象冒充和原型方式,就是不理解?什么是对象冒充,这个含义我一直不明白,为什么叫冒充呢?另外,什么是原型方式,是不是用prototype属性增加函数,就是原型方式呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对象冒充是一个很有用的概念原理在于javascript的this链比如function Father() { this.name = 'father'; Son();}function Son() { alert(this.name);}你会很惊讶的看到,Son中的this指向了Father.这个跟java内部类的机制是一致的。即内部函数可以获得外部函数的变量。那么反过来会怎么样?function Father() { this.name = 'father';}function Son() { Father();}alert(new Son().name);Son的name为undefined,无法取得。但是,有办法把内部域绑定到外部上面看下面代码function Father() { this.name = 'father';}function Son() { this.init = Father; this.init(); delete this.init;}alert(new Son().name);首先分析下this.init = Father;这句就是把父类函数绑定到this.init上面,接下来这句比较关键this.init();这句遵循了一个this关系链首先,Father中的this.name连接到外部,被this.init接收到。使得Father中的this.name的this等于this.init中的this.效果就如同与在Son中执行了this.name = 'Father';故将此继承方法命名为对象冒充 function Father() { this.name = 'father';}function Son() {}Son.prototype = new Father();alert(new Son().name);这种继承方法叫原型原型继承有个好处就是 var son = new Son();alert(son instanceof Father);// 返回true而对象冒充则做不到这点。 js 页面离开确认提示窗,纠结的问题!!! 请高手帮忙瘦身JS代码... js一个小问题 如何在form提交前调用一个函数(散分了!!!!) 能控制页眉页脚以及打印纸张大小的免费打印源代码 多个名字相同的 text 请教限制输入问题 高人进来!!分不够狂加,直到解决问题位置 如何检测到Alt+F4,还有就是如何在不同的浏览器里检测关闭事件 请高人帮偶改写个函数,分不够,再加。 请教大侠,为何用onsubmi方法的return false不能阻止表单的提交? 【原创】Lazyload 延迟加载效果 谁能一口气把css的东西说完?
原理在于javascript的this链
比如
function Father() {
this.name = 'father';
Son();
}function Son() {
alert(this.name);
}你会很惊讶的看到,Son中的this指向了Father.这个跟java内部类的机制是一致的。即内部函数可以获得外部函数的变量。那么反过来会怎么样?
function Father() {
this.name = 'father';
}function Son() {
Father();
}alert(new Son().name);
Son的name为undefined,无法取得。但是,有办法把内部域绑定到外部上面
看下面代码
function Father() {
this.name = 'father';
}function Son() {
this.init = Father;
this.init();
delete this.init;
}alert(new Son().name);首先分析下this.init = Father;
这句就是把父类函数绑定到this.init上面,
接下来这句比较关键this.init();
这句遵循了一个this关系链
首先,Father中的this.name连接到外部,被this.init接收到。
使得Father中的this.name的this等于this.init中的this.
效果就如同与在Son中执行了this.name = 'Father';
故将此继承方法命名为对象冒充
this.name = 'father';
}function Son() {
}Son.prototype = new Father();alert(new Son().name);这种继承方法叫原型
原型继承有个好处就是 var son = new Son();
alert(son instanceof Father);// 返回true而对象冒充则做不到这点。