zoukankan      html  css  js  c++  java
  • javascript权威指南(07~08)

    7.2.2. 检验属性是否存在

    if ("x" in o) o.x = 1;
    if (o.x !== undefined) o.x = 1;
    

    7.3. 属性访问

    object.property;object["property"]

    在json中相关的定义也可以不是字符串,如{'100',height:'200',color:'ddddd'}等价 {'width':'100','height':'200','color':'ddddd'}

    7.4.5. hasOwnProperty() 方法

    指对象自己本地定义的属性,原型链上继承来的是不属于的

    7.4.6. propertyIsEnumerable() 方法

    返回值同hasOwnProperty(),指对象自己本地定义的属性,原型链上继承来的是不属于的,可列举的属性

    7.4.7. isPrototypeOf() 方法

    JavaScript 中isPrototypeOf函数方法是返回一个布尔值,指出对象是否存在于另一个对象的原型链中。使用方法:object1.isPrototypeOf(object2)

    如果 object2 的 原型链中包含object1,那么JavaScript中isPrototypeOf函数方法返回 true。原型链可以用来在同一个对象类型的不同实例之间共享功能。如果 object2 不是一个对象或者 object1 没有出现在 object2 中的原型链中,JavaScript中isPrototypeOf函数方法将返回 false。

    var o = {}
    Object.prototype.isPrototypeOf(o); // true: o.constructor == Object
    Object.isPrototypeOf(o); // false
    o.isPrototypeOf(Object.prototype); // false
    Function.prototype.isPrototypeOf(Object); // true: Object.constructor==Function
    

    7.6. 读写数组元素

    相关元素索引应为[0,232-1],其他情况下都是在数组对象上面添加的相关的属性

    7.6.2. 删除 Array 元素

    删除元素的方式,如果通过delete操作符,只是设置undefined 值,需要通过方法shift(),pop(),splice()

    8.1.2. 函数定义

    匿名函数的定义,并将函数引用传递给变量,和直接函数定义存在一定的差距。主要是要考虑js的编译执行的过程。

    function hypotenuse(a, b) {
        function square(x) { return x*x; };
        return Math.sqrt(square(a) + square(b));
    }
    function hypotenuse(a, b) {
        return Math.sqrt(square(a) + square(b));
        function square(x) { return x*x; };
    }
    function hypotenuse(a, b) {
        return Math.sqrt(square(a) + square(b));
        var square =function (x) { return x*x; };
    }
    

    匿名函数的定义方式也有许多运用的好处。

    f[0] = function(x) { return x*x; };  // Define a function and store it
    a.sort(function(a,b){return a-b;});  // Define a function; pass it to another
    var tensquared = (function(x) {return x*x;})(10);  // Define and invoke
    

    8.4. 函数和方法

    函数调用一般为全局对象调用的。方法则是对象内定义的函数,是属于对象的。

    var name="win";
    function o()
    {
        this.name="0";
        this.a=function ()
        {
            alert(this.name);
            var name="a";
            function b()
            {
                alert(this==window);
                alert(this.name);
                alert(name);//这个是通过定义域链//a
            };
            b();//内联函数,都是window对象调用的。
            this.e=b;//实例的属性e
            this.e();
        };
    };
    var d=new o();
    d.a();
    d.e();
    

    8.6.3. 定义函数静态变量

    uniqueInteger.counter = 0;
    function uniqueInteger() {
        // Increment and return our "static" variable所有函数共享
        return uniqueInteger.counter++;
    }
     // 改成这种是不是好些
    function uniqueInteger() {
        uniqueInteger.counter = uniqueInteger.counter||0;
        return uniqueInteger.counter++;
    } 
    

    8.9. Function() 构造器

    函数调用一般为全局对象调用的。方法则是对象内定义的函数,是属于对象的。

    var f = new Function("x", "y", "return x*y;");可以动态创造函数,因为相关的可以字符串作为参数。注意函数是不存在相关的定义域的

    var y = "global";
    function constructFunction() {
        var y = "local";
        return new Function("return y");  // Does not capture the local scope!
    }
    // This line displays "global" because the function returned by the
    // Function() constructor does not use the local scope. Had a function
    // literal been used instead, this line would have displayed "local".
    alert(constructFunction()());  // Displays "global"
    
  • 相关阅读:
    MyBatis环境配置
    log4j配置不同的类多个日志文件
    Http协议头、代理
    Apache二级域名实现
    Flash Builder 4.7 完美破解
    网页设计方面,哪些中英文字体的组合能有好的视觉效果
    网页设计中最常用的字体
    sublime text 3 插件:package control
    大量实用工具类、开源包,该帖绝对值得你收藏!
    10个简化Web开发者工作的HTML5开发工具
  • 原文地址:https://www.cnblogs.com/legu/p/1692807.html
Copyright © 2011-2022 走看看