prototype、__proto__、constructor、this——不懂别说会JS

JS对象

  • 每一个Javascript对象(null除外)都和另一个对象相关联,即原型,每一个对象都从原型继承属性。
  • 所有通过对象直接量创建的对象都具有同一个原型对象,通过Object.prototype可以获得对原型对象的引用。
  • 通过new关键字和构造函数创建的对象的原型就是构造函数的prototype属性的值
  • 普通的原型对象属于普通对象,普通对象都具有原型(Object.prototype比较特殊,不继承任何属性)
  • 所有的内置构造函数以及大部分自定义构造函数都具有一个继承自Object.prototype的原型
  • 构造函数的原型中存在预先定义好的constructor属性,对象继承的constructor均指代他们的构造函数。构造函数是类的标识,因此这个constructor属性为对象提供了类
var o = new F();
o.constructor === F	/*true,指代类本身*/

Javascript中class的写法

注:为和普通函数区别开,类的命名首字母一般是大写

下面定义了Cat、cat类

/*写法一:*/
var Cat = function(){
	this.animal = "Cat:大写的猫";
};

var cat = function(){
	this.animal = "cat:小写的猫";
};

/*写法二:*/
function Cat(){
	this.animal = "Cat:大写的猫";
}

function cat(){
	this.animal = "Cat:小写的猫";
}

这里输出的结果是相同的,即类的命名首字母大写并不是强制的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值