1.在JavaScript中,原型也是一个对象,通过原型可以实现 对象的属性继承,JavaScript的对象中都包含了一个"[[prototype]]"内部属性,这个属性所对应的就是该对象的原型。
2.原型的思想就是内存复用。
3. typeof是一个系统提供的全局函数 它的返回值是一个字符串:string 、number、boolean、null、undefined、Object、function
可以使用typeof()来查看数据的类型。
var a = 10
var b = [1,2,3]
console.log(typeof a)
console.log(typeof b)
4.object和function 都是js中的引用数据
引用数据就是一种内存空间,是一种数据容器(数据容器就是可以存储很多数据的引用)
数组是一种有下标的数据容器
对象是一种键值对的数据容器
函数是一种有代码块和作用域的数据容器
5.函数的属性:
name : 保存一个字符串 就是函数的名字
length :保存一个数字 是函数的形参的个数
prototype : 保存了一个对象,这个对象是new Object()
6.所有的函数都有name,length,prototype属性,用函数创建对象,创建出来的对象的原型对象就是prototype属性引用的对象。prototype属性中引用了一个系统内置的对象: new object()
function fn() {
this.a = 1
}
var f1 = new fn()
console.log(f1.__proto__)
console.log(f1.__proto__ === fn.prototype)
7.对象有__proto__属性 代表它的原型对象
函数有prototype属性 代表创建的对象的原型对象
原型对象可以访问成员
function fn() {
this.a = 20
}
function fm() {
this.a = 30
}
fm.prototype.fn = new fn()
var f1 = new fm()
console.log(f1)
结果:
8.用函数创建对象 这个创建出来的对象有个原型对象1;又用这个函数创建对象 这个创建出来的对象也有个原型对象2;原型对象1和原型对象2是同一个对象
function fn() {
this.a = 20
}
var f1 = new fn()
var f2 = new fn()
console.log(f1.__proto__)
console.log(f2.__proto__)
console.log(f1.__proto__ === f2.__proto__)
结果:
9.对象取成员是,如果对象没有该成员,就会取原型对象中查找取值;如果所有原型对象中都没有就返回undefined.
function fn() {
}
fn.prototype.a = 10
var f1 = new fn()
console.log(f1.a)
结果: