码迷,mamicode.com
首页 > 编程语言 > 详细

javascript高级技巧篇

时间:2019-03-31 22:11:26      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:text   json   string   value   修改   asc   const   cto   .class   

安全的类型检测

在任何值上调用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高级技巧篇

标签:text   json   string   value   修改   asc   const   cto   .class   

原文地址:https://www.cnblogs.com/fqh123/p/10633453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!