//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 --> 对象 --> 构造器 --> 原型对象 javascript
instanceof:java
1.用来肯定一个实例是不是由特定函数构造器所建立的;chrome
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中的(六大)基本数据类型:this
1.简单数据类型spa
Undefined、Null、Boolean、Number、Stringprototype
2.复杂数据类型code
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"
参考文献