标签:__ proto Object Person 面向对象 prototype 构造函数
1、创建对象
(1)字面量方式创建对象
var obj = {...}
(2)内置构造函数创建对象
var obj = new Object()
(3)工厂函数创建对象
function create(name,age){
var obj = {}
obj.name = name
obj.age = age
return obj
}
var obj1 = create('Jack',18)
var obj2 = create('Rose',20)
console.log(obj1,obj2)
(4)自定义构造函数创建对象
function createObj(name,age){
this.name = name
this.age = age
}
var obj1 = new createObj('Jack',18)
var obj2 = new createObj('Rose',20)
console.log(obj1,obj2)
2、构造函数的使用
调用构造函数时与new连用,与普通函数没有区别;
书写构造函数,函数名首字母大写;
调用构造函数时,如果不需要传递参数,可以不写最后的小括号;
构造函数内部不要随便写return。
——构造函数的不合理:只要创建一次(new一次)就有一个函数在占用空间——原型
3、原型prototype:每一个函数天生自带一个属性,叫做prototype,是一个对象——解决了上面说的构造函数的不合理性,prototype专门给实例对象使用
<script>
function Person(){}
Person.prototype.a=18
Person.prototype.b=50
console.log(Person.prototype)
//创建一个实例对象
var p1 = new Person()
//每一个对象天生自带一个属性__proto__,指向所属构造函数的prototype
console.log(p1.__proto__ === Person.prototype)
</script>
4、原型链:用__proto__串联起来的对象链状结构,每一个对象数据类型,都有一个属于自己的原型链
作用——为了访问对象成员
<script>
function Person(){}
//创建一个实例对象
var p1 = new Person()
//实例对象身上的__proto__指向所属构造函数的prototype,即p1.__proto__指向Person.prototype
//Person.prototype和Function.prototype都是对象数据类型(Object),在JS内所有的Object数据类型都属于Object这个内置构造函数,因此Person.prototype和Function.prototype的__proto__都指向 Object.prototype
//Person和Object都是函数,在JS内所有的函数都是Function这个内置构造函数的实例,因此Person.__proto__和Object.__proto__都指向指向Function.prototype
//注意:Object.prototype在JS 内叫做顶级原型,不再有__proto__,因此Object.prototype的__proto__指向null
</script>
标签:__,proto,Object,Person,面向对象,prototype,构造函数 来源: https://www.cnblogs.com/mmmmmm-rj/p/15967632.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。