1.typeof undefiend: undefined
typeof null: object
typeof Boolean: function
typeof String : function
typeof Number: function
typeof Object: function
2.ES6 Class
a:为什么提出Class?
答:Class,是对象的模板。 更符合面向对象。
b:ES5 的构造函数Point
,对应 ES6 的Point
类的构造方法。 ES6 的类,完全可以看作构造函数的另一种写法。
c: Javascript规定,每一个构造函数都有一个prototype属性,指向另一个对象()。这个对象的所有属性和方法,都会被构造函数的实例继承。
prototype
对象的constructor
属性,直接指向“类”的本身(构造函数),这与 ES5 的行为是一致的。
d:实现方法私有,实现属性私有! (es6还没,所以只能变通的实现)
e:由于本质上,ES6 的类只是 ES5 的构造函数的一层包装,所以函数的许多特性都被Class
继承,包括name
属性。
f: 如果某个方法之前加上星号(*
),就表示该方法是一个 Generator 函数。
g:class的静态方法, 属于类,不属于实例! 父类的静态方法,可以被子类继承。
h:ES6 为new
命令引入了一个new.target
属性,该属性一般用在在构造函数之中,返回new
命令作用于的那个构造函数。如果构造函数不是通过new
命令调用的,new.target
会返回undefined
,因此这个 属性可以用来确定构造函数是怎么调用的。 注意,在函数外部,使用new.target
会报错。
二:ES6阮一峰 Class模块内容的学习
1.prototype:构造函数才有的属性哦!
2.constuctor:prototype对象的constructor属性指向构造函数。
3._proto_:对象的原型 和prototype一样!
4.只有构造函数才有prototype属性,而构造函数的实例是没有该属性的。 哦哦哦!!!!!!!!!!!!
当前对象的prototype属性指向一个prototype对象,这个prototype对象中又有一个constructor属性,这个constructor指向一个constructor
对象,而这个constructor对象就恰恰是当前对象。
三: