• javascript一些底层方法总结及用法


    本地对象:ECMA-262 把本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。
              简单来说,本地对象就是 ECMA-262 定义的类(引用类型)
    
    内置对象:ECMA-262 把内置对象(built-in object)定义为“由 ECMAScript 实现提供的、独立于宿主环境的所有对象,
              在 ECMAScript 程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已被实例化了。ECMA-262 只定义了两个内置对象,
              即 Global 和 Math (它们也是本地对象,根据定义,每个内置对象都是本地对象)。
    
    宿主对象:所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。
              所有 BOM 和 DOM 对象都是宿主对象。
    
    
    enumerables = ['hasOwnProperty', 'valueOf', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'constructor'];
    
    // hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。
    // Ie8以下不支持dom. hasOwnProperty 方法。
    // isPrototypeOf是用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false。
    
    1、hasOwnProperty
    
    作用:是用来判断一个对象是否有你给出名称的属性或对象。
    
    调用方式:object.hasOwnProperty(proName)
    
    参数:object(必须) 对象的实例;proName(必须) 一个属性名称的字符串值
    
    注意:如果 object 具有带指定名称的属性,则 hasOwnProperty 方法返回 true,否则返回 false。
          此方法不会检查对象原型链中的属性。
          该属性必须是对象本身的一个成员。
          Internet Explorer 8 和低于其的版本的宿主对象不支持该属性。
    
    代码举例:
          在下面的示例中,所有 String 对象共享一个公共 split 方法。 下面的代码将显示 false 和 true。
     var s = new String("Sample");
     console.log(s.hasOwnProperty("split"));
     console.log(String.prototype.hasOwnProperty("split"));
    
    
    2、in 运算符
    
    作用:测试一个对象中是否存在一种属性。
    
    调用方式:result = property in object
    
    参数:result(必须) 任何变量;proName(必须) 计算结果为字符串表达式的表达式;object(必须) 任意对象
    
    注意:in 运算符确定对象中是否有名为 property 的属性。 它还确定属性是否为对象的原型链的一部分。
    
    代码举例:
       code1:
          var myObject = new Object();
              myObject.name = "James";
              myObject.age = "22";
              myObject.phone = "555 0234";
    
          if ("phone" in myObject) {
             console.log("property is present");
          } else  {
             console.log("property is not present");
          }
    
      code2:
         console.log("toString" in "zheyang");
         console.log("toString" in new String("zheyang"))
    
     思考: var aa = "zheyang" 与 aa = new String("zheyang") 的区别 
    
    3、valueOf
        
    作用:返回指定对象的原始值。
    
    调用方式:object.valueOf();
    
    注意:在JS里数字其实都是浮点数。
    
    代码举例:
       var aa = 123 
       console.log(aa.valueOf())
       console.log(123.valueOf())
       console.log(123..valueOf())
       console.log((123).valueOf())
    
    
    4、typeof
    
    作用:返回指定对象的类型。
    调用方式:typeof object;
    
    代码举例:
       var aa = 12;
       var bb = new Number(12)
       console.log(typeof aa)
       console.log(typeof bb)
    
    5、instanceof
    
    作用:返回一个布尔值,该值指示一个对象是否为特定类或构造函数的一个实例。
    
    调用方式:object instanceof class;
    
    参数:object(必须) 一个对象;class(必须) 任何对象类或构造函数;
    
    注意:如果 object 是 class 或构造函数的实例,则 instanceof 运算符返回 true。
          如果 object 不是指定类或函数的实例,或者 object 为 null,则返回 false。
          JavaScript Object 很特殊,当且仅当对象用 Object 构造函数构造时,对象才被视为 Object 的实例。
    
    代码举例:
        function ClassA() {
    
        }
    
        function ClassB() {
        
        }
        ClassB.prototype = {
            constructor: ClassA
        }
    
        function ClassC(){
           ClassA.call(this);
        }
        function ClassD(){}
    
        var obj = new ClassA
        var obj2 = new ClassB;
        var obj3 = new ClassC;
        ClassD.prototype = obj2;
        var obj4 = new ClassD;
    
        console.log(obj instanceof ClassA)
        console.log(obj2 instanceof ClassB)
        console.log(obj2 instanceof ClassB)
        console.log(obj3 instanceof ClassA)
        console.log(obj4 instanceof ClassA)
        console.log(ClassA instanceof Function)
    
    6、isPrototypeOf
    
    作用:确定一个对象是否存在于另一个对象的原型链中。
    
    调用方式:prototype.isPrototypeOf(object)
    
    参数:prototype(必须) 对象原型;object(必须) 另一个对象,将对其原型链进行检查
    
    注意:如果 object 的原型链中具有 prototype,则 isPrototypeOf 方法返回 true。
          原型链用于在同一个对象类型的不同实例之间共享功能。
          当 object 不是对象或当 prototype 没有出现在 object 的原型链中时,isPrototypeOf 方法返回 false。
    
    代码举例:
        function Rectangle() {}
        var rec = new Rectangle();
        cosole.log(Rectangle.prototype.isPrototypeOf(rec));
    
    7、propertyIsEnumerable
    
    作用:返回布尔值,该值指示指定属性是否为对象的一部分以及该属性是否是可枚举的。
    
    调用方式:object.propertyIsEnumerable(propName)
    
    参数:object(必须) 对象实例;propName(必须) 一个属性名称的字符串值;
    
    注意:如果 propName 存在于 object 中且可以使用一个 For...In 循环枚举出来,则 propertyIsEnumerable 属性将返回 true。
          如果 object 不具有所指定名称的属性或者所指定的属性不是可枚举的,则 propertyIsEnumerable 属性将返回 false。
          通常,预定义的属性不是可枚举的,而用户定义的属性总是可枚举的。
          propertyIsEnumerable 属性不考虑原型链中的对象。
    
    代码举例:
        var a = new Array("apple", "banana", "cactus");
        var s = a.propertyIsEnumerable(1);
        console.log (s);
    
    8、toString / toLocaleString
    
    作用:可把一个对象转换为字符串,并返回结果。
    
    调用方式:object.toString(num)
    
    参数:object(必须) 对象;num(非必须) ;
    
    注意:如果对象是数子,则参数可为要转换的进制数,默认为10
          如果是布尔类型,则会转换为对应的字符串
    
    代码举例:
        
       var aa = 123
       console.log(aa.toString(2))
       var bb = new Boolean(true)
       console.log(bb)
    
    9、constructor
    
     代码举例: constructor.parent 
    
    10、 Function 与 Object
    
    Function:
    
    首先回顾一下函数对象的概念,函数就是对象,代表函数的对象就是函数对象。
    所有的函数对象是被Function这个函数对象构造出来的。
    也就是说,Function是最顶层的构造器。
    它构造了系统中所有的对象,包括用户自定义对象,系统内置对象,甚至包括它自已。
    这也表明Function具有自举性(自已构造自己的能力)。
    这也间接决定了Function的[[call]]和[[constructor]]逻辑相同。
    
    Object:
     
    对于Object它是最顶层的对象,所有的对象都将继承Object的原型,
    但是你也要明确的知道Object也是一个函数对象,
    所以说Object是被Function构造出来的。
    
    代码举例:
    alert(Function instanceof Function);//true 
    alert(Function instanceof Object);//true    
    alert(Object instanceof Function);//true 
    function Foo() {};
    var foo = new Foo();
    alert(foo instanceof Foo); // true
    alert(foo instanceof Function); // false
    alert(foo instanceof Object); // true
    alert(Foo instanceof Function); // true
    alert(Foo instanceof Object); // true
  • 相关阅读:
    java去除字符串中的空格、回车、换行符、制表符
    Tomcat 7 'javax.el.ELException' 的解决方式(failed to parse the expression [${xxx}])
    quartz CronExpression表达式
    iconMoon:字体图标(iconfont)解决方案及使用教程
    小程序:前端防止用户重复提交&即时消息(IM)重复发送问题解决
    小程序:位置信息(Location)及微信小程序LBS解决方案实践
    小程序:web-view采坑指南
    小程序:如何让scroll-view包含内容完整滚动
    小程序:如何在wxml页面中调用JavaScript函数
    小程序:怎么在两层列表循环(wx:for)的时候判断是否为最后一个元素
  • 原文地址:https://www.cnblogs.com/haohaoday/p/3944987.html
Copyright © 2020-2023  润新知