zoukankan      html  css  js  c++  java
  • javascript权威指南笔记学习

        //返回了一个继承自原型对象p的属性的新对象
        function inherit(p){
            if (p ==null) throw TypeError();
            if (Object.create){
                return Object.create(p);
            }
            var t=typeof p;
            if (t!=="object"&&t!=="function") throw TypeError();
            function f(){};
            f.prototype=p;
            return new f();
        }

    属性访问错误

    属性访问并不总是返回或设置一个值。查询一个不存在的属性并不会报错,如果在对象o自身的属性或继承的属性中均未找到这个属性x,属性访问表达式o.x返回undefine。回想一下我们的book对象有属性“sub-title”,而没有属性“subtitle”:

    book.subtitle    undefined

    试图查询这个不存在的对象的属性就会报错。null和undefined值都没有属性,因为查询这些值的属性会报错,接上例:

    //抛出一个类型错误异常,undefined没有length属性

    var len=book.subtitle.length;

    除非确定book和book.subtitle都是(或在行为上)对象。否则不能这样写表达式book。subtitle.length,因为这样会报错,下面提供了两种避免出错的方法。

    var len=undefined;

    if(book){

       if(book.subtitle) len=book.subtitle.length;

    }

    var len=book&&book.subtitle&&book.subtitle.length;

    //判断类型

    function classof(o){
    if(o===null){retuen "Null"}
    if(o===undefined){return "Undefined"}
    return Object.prototype.toString().call(o).slice(8,-1)
    
    } 
      function inherit(p){
            if (p ==null) throw TypeError();
            if (Object.create){
                return Object.create(p);
            }
            var t=typeof p;
            if (t!=="object"&&t!=="function") throw TypeError();
            function f(){};
            f.prototype=p;
            return new f();
        }
     function range(from,to){
            var r=inherit(range.method);
            r.from =from;
            r.to=to;
            return r
     }
     range.method={
         include:function(x){
             return this.from<=x&&this.to>=x;
         },
         foreach:function(f){
             for (var x=Math.ceil(this.from);x<=this.to;x++)
                 f(x)
         },
         toString:function(){
             return  "("+this.from +'...'+this.to+')';
         }
     }
     var r= range(1,3);
     console.log(r.include(2));
     r.foreach(console.log);
     console.log(r);
     var b=range(2,4);
     console.log(b);
     console.log(r)

    //上面这段代码有利于深入了解inherit这个函数,由函数生成的对象的是一个具有自己地址的对象。

    function type(o){
        var t,c,n;
        if (o==null) return "null";
        if (o!==o) return "nan";
        if (t = typeof o!=="object") return t;
        if ((c = classof(o))!=="Object") return c;
        if (o.constructor&&typeof o.constructor==="function"&&(n = o.constructor.getName()))
            return n;
        return "Object"
    };
    Function.prototype.getName =function(){
        if ("name" in this) return this.name;
        return this.name=this.toString().match(/functions*([^(]*)(/)[1]
    }
    function classof(o){
    return Object.prototype.toString.call(o).slice(8,-1); 
    }

     

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         

    //赋值失败,但没报错,Object.prototype没有修改

    删除属性

    delete运算符,

    delete book.author

    delete book["main title"]

    ---恢复内容结束---

        //返回了一个继承自原型对象p的属性的新对象
        function inherit(p){
            if (p ==null) throw TypeError();
            if (Object.create){
                return Object.create(p);
            }
            var t=typeof p;
            if (t!=="object"&&t!=="function") throw TypeError();
            function f(){};
            f.prototype=p;
            return new f();
        }

    属性访问错误

    属性访问并不总是返回或设置一个值。查询一个不存在的属性并不会报错,如果在对象o自身的属性或继承的属性中均未找到这个属性x,属性访问表达式o.x返回undefine。回想一下我们的book对象有属性“sub-title”,而没有属性“subtitle”:

    book.subtitle    undefined

    试图查询这个不存在的对象的属性就会报错。null和undefined值都没有属性,因为查询这些值的属性会报错,接上例:

    //抛出一个类型错误异常,undefined没有length属性

    var len=book.subtitle.length;

    除非确定book和book.subtitle都是(或在行为上)对象。否则不能这样写表达式book。subtitle.length,因为这样会报错,下面提供了两种避免出错的方法。

    var len=undefined;

    if(book){

       if(book.subtitle) len=book.subtitle.length;

    }

    var len=book&&book.subtitle&&book.subtitle.length;

    //判断类型

    function classof(o){
    if(o===null){retuen "Null"}
    if(o===undefined){return "Undefined"}
    return Object.prototype.toString().call(o).slice(8,-1)
    
    } 

     

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         

    //赋值失败,但没报错,Object.prototype没有修改

    删除属性

    delete运算符,

    delete book.author

    delete book["main title"]

  • 相关阅读:
    C# Stream篇(—) -- Stream基类-----转载
    C# Stream篇(三) -- TextWriter 和 StreamWriter---转载
    C#文件过滤器filter---转载
    微信列表展示与详情页
    关于微信表单添加与图片上传
    登录的php代码 接口开发
    文章列表与点赞的一些功能实现 以及详情页点赞、取消赞操作
    Linux 简单命令总结
    微信小程序实现登录功能 (第一种模式)
    201509-1 数列分段 Java
  • 原文地址:https://www.cnblogs.com/heyinwangchuan/p/6680492.html
Copyright © 2011-2022 走看看