js对象、原型、继承

prototype

每个函数都有一个prototype属性,而他的属性值是一个对象,默认只有一个叫做constructor的属性,指向这个函数本身。
原型既然作为对象(属性的集合),除了constructor外,还可以自定义许多属性。

当然了,我们也可以在自己定义的方法的prototype中增加我们自己的属性,比如像下面这样的:

function Fn() { }
    Fn.prototype.name = '张三';
    Fn.prototype.getAge = function () {
       return 12;
};

proto

function Fn() { }
   Fn.prototype.name = '张三';
    Fn.prototype.getAge = function () {
       return 12;
};
   var fn = new Fn();
   console.log(fn.name);
   console.log(fn.getAge ());

即,Fn是一个函数,fn对象是从Fn函数new出来的,这样fn对象就可以调用Fn.prototype中的属性。

但是,因为每个对象都有一个隐藏的属性——“proto”,这个属性引用了创建这个对象的函数的prototype。即:fn.proto === Fn.prototype
那么,这里的_proto_到底是什么呢?

其实,这个__proto__是一个隐藏的属性,javascript不希望开发者用到这个属性值,有的低版本浏览器甚至不支持这个属性值。

obj.__proto__和Object.prototype的属性一样!
每个对象都有一个_proto_属性,指向创建该对象的函数的prototype。

Object.prototype却是一个特例——它的__proto__指向的是null

原型继承

首先说一下什么是原型链:
 访问一个对象的属性时,先在基本属性中查找,如果没有,再沿着_proto_这条链向上找,这就是原型链。
参考资料
部分内容转载自胡小小六博客

delete

1.可以删除对象中的属性与方法
删除后访问属性 返回 undefined 访问方法报错
2.不可以删除变量
3.删除不了原型链上的属性与方法

闭包

在这里插入图片描述
函数b在a中嵌套 a返回b
用途 读取函数内部的变量 让a中变量的值保留在内存中
优点 可以访问局部变量 缺点 占用内存

声明对象的6种方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

原型继承

在这里插入图片描述

构造继承

在这里插入图片描述
在这里插入图片描述

for in遍历对象

使用构造函数声明的对象要实例化后才可以遍历
i值取的是对象所有属性名称与方法名称

call方法

在这里插入图片描述

this

在这里插入图片描述
在这里插入图片描述

对象冒充

将父类的属性与方法一起传给子类作为特权属性与特权方法

在这里插入图片描述
s1.walk()会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值