• JavaScript之原型|typeof|instanceof


    //var 变量X --> 对象 --> 构造器 --> 原型对象 
    function Person(){};
    var stu = new Person();
    //var stu = new Person.constructor();//等效
    
    
    //instanceof:用来确定一个实例是否是由特定函数构造器所创建的;还可以用于判断函数是否继承了其原型链中任何对象(必须要了解:原型链)
    stu instanceof Person;//true
    typeof stu; // "object"
    stu.prototype; //undefined
    stu.constructor; // f Person(){}
    

    var 变量X --> 对象 --> 构造器 --> 原型对象

    instanceof:

        1.用来确定一个实例是否是由特定函数构造器所创建的;

        2.还可以用于判断函数是否继承了其原型链中任何对象(必须要了解:原型链)

    function Person(){this.name};
    function Student(){this.school};
    Student.prototype = new Person();//原型链,实现继承
    /*
        注意:
               强烈不推荐: 父类原型直接赋值给子类原型,否则子类原型上的任何修改都将会影响到父类的原型,因为他们是同一个对象
               但也有的好处:所有原型中继承的函数都是实时更新的(live-update)
               Eg:Student.prototype = Person.prototype;
    
    */
    
    var stu = new Student();
    console.log("stu instanceof Student:",stu instanceof Student);//true
    console.log("stu instanceof Person:",stu instanceof Person);//true  
    
    
    //////////////////////|分隔符|/////////////////////
    function a(){}
    (new a()) instanceof Function //false
    
    function a(){}
    (new a()) instanceof a // true
    
    function a(){}
    (new a()) instanceof Object // true
    

     

    hasOwnProperty(item):

      objectInstance.hasOwnProperty(item))//用于判断一个属性是否是对象实例定义的,还是从原型导入的 

    //扩展:对JavaScript原生对象的扩展
    //原理:原型对象
    Object.prototype.keys = function(){
    	var keys = [];
    	for(var item in this)
    		if(this.hasOwnProperty(item))//用于判断一个属性是否是对象实例定义的,还是从原型导入的
    		    keys.push(item);
    	return keys;
    }
    
    var obj = {"name":"johnny","age":21};
    obj.keys();//["name"."age"]
    

    ECMAScript中的(六大)基本数据类型

    1.简单数据类型

      Undefined、Null、Boolean、Number、String

    2.复杂数据类型

      Object

    备注:

      ECMAScript不支持任何创建自定义的机制,而所有值都最终都将是上述6种数据类型之一。

      但由于ECMAScript数据类型具有动态性,因此便没有再定义其他数据类型的必要了。

    //变量的动态性:这意味着相同的变量可用作不同的类型:
    var x                // x 为 undefined
    var x = 6;           // x 为数字
    var x = "Bill";      // x 为字符串
    

     typeof(A):检测给定变量的数据类型----typeof

    函数对象:typeof(function a(){}) //"function"
      说明:
        1.在safari、chrome中,返回“function”,其他浏览器中返回“object”。
        2.从技术角度讲,函数在ECMAScript中是对象,不是一种数据类型。
        3.然而,函数也确实有一些特殊的属性。因此通过typeof操作符区分函数和其他对象也是必要的。  
    
    对象:typeof({}) //"object"
            typeof(null) //"object"
    数组对象:typeof([]) //"object"
    
    undefined:typeof(undefined) //"undefined"(便是变量未定义,也可对某变量赋undefined为具体值)
      说明:
        1.undefined派生自null
        2.关于四大值属性(Infinity、NaN、undefined、null字面量),详见MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects
    
    字符串:typeof("") //"string"
    数值:typeof(34) // "number"
            typeof(NaN) // "number"
    布尔:typeof(true) //"boolean"
    

    参考文献

  • 相关阅读:
    Spring事务管理
    Spring Bean装配(下)——注解
    Spring Bean装配(上)
    Spring入门篇
    Spring入门篇——AOP基本概念
    计算机组成原理(1)——系统概述
    浏览器缓存 总结
    React-router 4 总结
    Redux 总结
    操作系统位数 的 概念(转)
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/7892702.html
Copyright © 2020-2023  润新知