悟透javascript中的function

除了方法,function还可以用来声明“类”,就是C#中的class。通过伪装的方式。代码如下:

 

复制代码
 <script type="text/javascript">
    function Car() {
        this.color = "none";
        if (typeof Car._initialize == "undefined") {
            Car.prototype.showColor = function () {
                alert(this.color);
            }
        }
        Car._initialize = true;
    }

    var car = new Car();
    car.showColor();
    car.color = "blue";
    car.showColor();
</script> 
复制代码

 

function变量是引用类型,内容是他本身也就是函数体。

javascript中的对象都有一个特点,里面存储的都是name/value。

 

var car = new Car(); new运算符生成的是一个object。

相当于

var car2 = {};//建一个空对象

//将car2的原型设置为Car.prototype,这一步是通过javascript内部的Object.create实现的,但是此函数是内部函数无法直接访问

Car.call(car2);//修改函数调用的上下文

alert(car2.color);

 

javascript不支持重载,原因是同名的function只能有一个,并且function函数的参数个数可以是任意的。

可以通过arguments对象伪装重载。通过传入对象的个数不同,判断个数而执行不同的方法。在开发jquery的插件时就要经常使用arguments对象实现函数的伪重载。

 

javascript中的this是函数上下文,不是在声明的时候决定的,而是在调用的时候决定的。因为全局函数其实就是window的属性,所以在顶层调用全局函数时this是指window对象。

利用“this指向函数调用者”的特性,可以实现链式调用。

使用链式调用的关键点就是要返回调用者本身,也就是this指针。

<div id="blog_post_info">
0
0
<div class="clear"></div>
<div id="post_next_prev">

<a href="https://www.cnblogs.com/tomkillua/archive/2012/07/26/2609492.html" class="p_n_p_prefix">« </a> 上一篇:    <a href="https://www.cnblogs.com/tomkillua/archive/2012/07/26/2609492.html" title="发布于 2012-07-26 10:08">二、JavaScript基础 学好jQuery要了解的</a>
<br>
<a href="https://www.cnblogs.com/tomkillua/archive/2012/07/28/2612905.html" class="p_n_p_prefix">» </a> 下一篇:    <a href="https://www.cnblogs.com/tomkillua/archive/2012/07/28/2612905.html" title="发布于 2012-07-28 10:54">四、javascript中的原型</a>
posted @ 2020-06-12 15:49  奋斗的中年人哈哈哈  阅读(108)  评论(0编辑  收藏  举报