关于js的构造函数和原型对象
来源:互联网 发布:电信是什么网络制式 编辑:程序博客网 时间:2024/05/21 06:55
构造函数的特点
1、构造函数的首字母必须大写,用来区分于普通函数
2、内部使用的this对象,来指向即将要生成的实例对象
3、使用New来生成实例对象
eg:
function Person(name,age){
this.name=name;
this.age=age;
this.sayHello=function(){
console.log(this.name+"say hello");
}
}
var boy=new Person("bella",23);
boy.sayHello();//bella say hello
构造函数的缺点:所有的实例对象都可以继承构造器函数中的属性和方法。但是,同一个构造函数的对象实例之间,无法共享属性和方法。
解决思路:
1、所有实例都会通过原型链引用到prototype
2、prototype相当于特定类型所有实例都可以访问到的一个公共容器
3、那么我们就将重复的东西到公共容器就好了
js中每个数据类型都是对象,除了null和undefine,而每个对象都是继承自一个原型对象
什么是原型?
原型是一个对象,其他对象可以通过它实现属性继承
prototype是构造函数的属性
constructor是构造函数的prototpe属性所指向的那个对象
也就是说constructor是原型对象的属性
function Person(name,age){
this.name=name;
this.age=age;
}
Person.prototype.sayHello=function(){
console.log(this.name+"hello")//lalahello
}
var girl=new Person("lala",23);
girl.sayHello();
console.log(girl.prototype)//undefined new出来的普通对象是没有原型的
console.log(girl.constructor)
/*ƒ Person(name,age){
this.name=name;
this.age=age;
}*/
console.log(Person.prototype.constructor)
/*ƒ Person(name,age){
this.name=name;
this.age=age;
}*/
Person.prototype包含了3个属性,一个是constructor,一个是__proto__,一个是刚才我们添加的sayHello
这个constructor就是我们的构造函数Person
那么__proto__是?
原型链:
每个对象都会在其内部初始化一个属性,就是__proto__,当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去__proto__里找这个属性,这个__proto__又会有自己的__proto__,于是这样一直找下去
阅读全文
0 0
- 关于js的构造函数和原型对象
- js关于原型构造函数和原型链的理解
- 关于js中,原型对象,原型链,构造函数,实例之间关系的理解与区别
- js 创建对象的两种主要方法 构造函数 和 原型+构造函数组合
- 关于js中构造函数与原型对象相结合的模式的疑惑与想法
- 秒懂JS对象、构造器函数和原型对象之间的关系
- 构造函数和原型对象
- js入门实例の构造函数/方法的定义和调用/原型对象
- js入门实例の构造函数/方法的定义和调用/原型对象
- JavaScript学习12 JS中定义对象的几种方式(原型和构造函数)
- js创建对象的构造函数模式+原型模式和组合继承\Hybrid Pattern & combination inheritance
- 关于js中对对象原型和构造函数的一些理解
- JS原型+构造函数创建对象
- js构造函数,原型对象,继承 (1)
- js构造函数,原型对象,继承 (2)
- js构造函数,原型对象,继承 (3)
- js中对象的内部原型和构造器原型对象的深入剖析
- [JS]JS对象的内部原型(__proto__)和构造器的原型(prototype)
- 产品经理之结构化思维表达
- 范数
- selenium+python处理广告弹窗
- 很有意思的接口中套接口的ijkplayer
- 在Ubuntu下安装source Insight
- 关于js的构造函数和原型对象
- SQL Server中的Merge关键字
- kafka入门-基本命令操作
- 【jquery】——之实践中应用
- 183.131.221.3奚梦瑶维密摔跤,是不幸?是机遇?
- 22222222
- 运动物体的检测--对视频检测的改进
- websocket基础
- HTTP Status 500