JS构造函数与原型
来源:互联网 发布:来自新世界知乎 编辑:程序博客网 时间:2024/06/05 21:09
// 工厂方式function createPerson(name,sex) { //原料 var obj = new Object(); //加工 obj.name = name; obj.sex = sex; obj.showName = function () { alert(this.name); }; obj.showSex = function () { alert(this.sex); }; //出厂 return obj;};var p1 = createPerson("blue","男");var p2 = createPerson("leo","女");p1.showName() // bluep2.showSex() // 女alert(p1.showName==p2.showName) // false 此时每新创建一个对象,它都是重新创建自己的showName方法// 用工厂方式构造函数function createPerson(name,sex) { //此处可以假想有 var this = new Object(); this.name = name; this.sex = sex; this.showName = function () { alert(this.name); }; this.showSex = function () { alert(this.sex); }; //此处可以假想有 return this;};var p1 = new createPerson("leo","女");var p2 = new createPerson("blue","男");p1.showSex() //女p2.showName() // bluealert(p1.showName==p2.showName) // false 此时同上//用原型构造函数 (如系统常用的类:new Date(),new Image()..)function CreatePerson(name,sex) { //将不同的属性放在函数内 this.name = name; this.sex = sex;};CreatePerson.prototype.showName = function () { //将相同的方法放在函数外 alert(this.name);};CreatePerson.prototype.showSex = function () { alert(this.sex);};var p1 = new CreatePerson("leo","女");var p2 = new CreatePerson("blue","男");p1.showSex() //女p2.showName() // bluealert(p1.showName==p2.showName) //true 此时所有创建出来的新对象都是使用原型中方法,是同一个//关于原型的优先级问题Array.prototype.a = 12;var arr = new Array(1,2,3);alert(arr.a) // 12 从原型中读取的//给对象添加属性arr.a = 5;alert(arr.a) // 5 直接给对象添加的属性覆盖原型中的属性//删除给对象添加的属性delete arr.a;alert(arr.a) // 12 删除直接给对象添加的属性后,原型中的属性就又出来了//总结: 给原型添加方法,相当于给一类对象添加;给对象添加方法,只是对单一对象添加的,他们之间的关系类似于CSS中的类样式与行间样式的关系
阅读全文
0 0
- JS构造函数与原型
- JS构造函数与原型
- JS构造函数与原型
- js 构造函数与原型模式
- JS----构造函数与原型prototype 区别
- js中构造函数与原型
- JS----构造函数与原型prototype 区别
- 构造函数与原型
- 原型与构造函数
- js 构造函数(construction)与原型(prototype)
- js构造函数的方法与原型prototype
- JS构造函数与原型prototype的区别介绍
- JS设计模式 -原型模式与构造函数
- ** Javascript 普通函数和构造函数的区别 && JS----构造函数与原型prototype 区别
- 原型链与构造函数
- 构造函数与prototype原型
- 关于js中,原型对象,原型链,构造函数,实例之间关系的理解与区别
- JS原型+构造函数创建对象
- Android的string中添加array 并使用
- Linux网络驱动程序开发实例分析
- Implement strStr()
- Java--泛型的原理以及使用场景
- 第一天 node.js基础部分
- JS构造函数与原型
- 数组的扩展
- scapy windows install
- Linux用户态和内核态
- Java面试题2
- 委托设计模式
- SpringCloud--consumer
- vs2017 存档android项目时{“jarsigner.exe”已退出,代码为 1。}报错的解决方法
- 地方报