javascript高级技巧篇

Posted fqh123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript高级技巧篇相关的知识,希望对你有一定的参考价值。

安全的类型检测

在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式字符串。每个类在内部都有一个[[Class]]属性,这个属性中就指定了各个类型的构造函数名。

使用这种方法判断值属于什么类型最可靠;比如:

    function isArray(value){
            return Object.prototype.toString.call(value)=="[object Array]";
      }
      function isFunction(value){
            return Object.prototype.toString.call(value)=="[object Function]";
      }
      function isRegExp(value){
            return Object.prototype.toString.call(value)=="[object RegExp]";
      }

判断是不是原生的JSON对象

    function isNativeJSON(value){
            return window.JSON&&Object.prototype.toString.call(value)=="[object JSON]";
      }

javascript中,自定义的构造函数上述方法检测都会返回[object object]。

作用域安全构造函数

    function Person(name,age,job){
            if(this instanceof Person){
                  this.name=name;
                  this.age=age;
                  this.job=job;
            }else{
                  return new Person(name,age,job);
            }
      }

继承作用域安全的构造函数

    function LittleBoy(classNum,name,age,job){
            Person.call(this,name,age,job);//Person的作用域是安全的,this并不指向Person实例,所以必须让LittleBoy的原型链指向Person的实例
            this.classNum=classNum;
            this.getClassNum=function(){
                  return this.classNum;
            }
      }
      LittleBoy.prototype=new Person();

惰性载入函数

在if判断后,将原函数重新定义,再次执行原函数时,就不用if判断了。也就是在一定环境下,只需第一次有if判断,后面就不需要if判断,从而提高性能。

防篡改对象

    var person={name:"ha"};
      Object.preventExtensions(person);//禁止再添加新属性和方法,但可以修改和删除现有的属性和方法

调用Object.isExtensible()方法可以判断对象是否可拓展

    console.log(Object.isExtensible(person));//false

密封对象

    Object.seal(person);//不能添加和删除属性和方法

判断是否是密封对象

    Object.isSealed(person);

冻结对象

    Object.freeze(person);//不能修改,不能添加,不能删除

判断是否被冻结

    console.log(Object.isFrozen(person));//判断是否被冻结

 

以上是关于javascript高级技巧篇的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 开发人员需要知道的简写技巧

JavaScript 开发人员需要知道的简写技巧

你可能不知道的JavaScript代码片段和技巧(下)

你可能不知道的JavaScript代码片段和技巧(上)

JavaScript笔试题(js高级代码片段)

javascript中函数的5个高级技巧