《悟透javascript》学习笔记:X、深入继承
引言
JavaScript不是按面向对象的思想设计的程序语言,所以它不具备像现有的面向对象的语言那样的功能,但是面向对象的思想是如此的深入人心,以至于JavaScript也削尖了脑袋“面向对象”。果真,通过一些特殊的处理,JavaScript也具有了基本的面向对象的功能。
function、new、prototype与constructor
看代码:
<script language="javascript">
function Person(name){
this.name=name;
this.showMe=function(){
alert(this.name);
}
};
var one=new Person('JavaScript');
one.showMe();
</script>
很多人见到了久违的new操作符,于是就叫Person为“类”,可是又没有关键字class的出现,觉得叫“类”有点勉强。于是退而求其次叫Person为类的构造函数。这些概念好像都没有错,之所以出现这样的情况,可能是因为大家都学习了传统的面向对象语言(c++,c#,java等),还有一种思维定势吧。为了让javascript也面向对象,要在javascript中找到与传统面向对象语言的影子。可是按照javascript的说法,function定义的这个Person就是一个Object(对象),而且还是一个很特殊的对象,这个使用function定义的对象与使用new操作符生成的对象之间有一个重要的区别。这个区别就是function定义的对象有一个prototype属性,使用new生成的对象就没有这个prototype属性。
prototype属性又指向了一个prototype对象,注意prototype属性与prototype对象是两个不同的东西,要注意区别。在prototype对象中又有一个constructor属性,这个constructor属性同样指向一个constructor对象,而这个constructor对象恰恰就是这个function函数本身。有点头晕,看下图吧:
下面举例证明:
<script language="javascript">
function Person(name){
this.name=name;
this.showMe=functi
相关文档:
Javascript 面向对象机制的实现
自定义类的实现方法很多,重点谈两种。
构造函数法
function Player(url){
this.url = url;
this.showUrl = function(){
alert(this.url);
}
&nb ......
//获取当前文件全路径
<script language="javascript">
alert(window.location.href);
alert(window.location);
alert(location.href);
alert(parent.location.href);
alert(top.location.href);
alert(document.location.href);
alert(document.URL);
</scri ......
网页可见区域宽:document.body.clientWidth;
网页可见区域高:document.body.clientHeight;
网页可见区域高:document.body.offsetWidth (包括边线的宽);
网页可见区域高:document.body.offsetHeight (包括边线的宽);
网页正文全文宽:document.body.scrollWidth;
网页正文全文高:document.body.scrollHeight;
......
首先是我们熟悉的extend函数
/**
* 扩展函数
* @param target 扩展对象
* @param params 扩展参数
*/
function extend(target, params) {
if (!target) {
target = {};
}
for (var prop in params) {
target[prop] = params[prop];
}
r ......
自从 Google 推出含 V8 JavaScript 引擎的 Chrome 以来,公众对 JavaScript
引擎执行效率的胃口又一次被提高,众多浏览器的开发者们绞尽脑汁提升他们的 JavaScript 性能,Opera 最新的10.50 版的 Carakan
引擎据称已经超过 V8,而 Firefox 的开发者们也不甘示弱。
最近升级到 Firefox 3.6 的用户已经发现他们的 Java ......