javascript原型对象存在的问题(3)
来源:互联网 发布:网络黄金黄金裴蕾 编辑:程序博客网 时间:2024/06/13 21:21
原型对象虽然可以对所有实例的属性和方法共享,但是它的局限性也是很明显的,这是因为共享的特性,也导致原型存在的最大问题,原型里的属性和方法会被所有对象所共享: static。
function Person(){}Person.prototype = { constructor:Person , name: 'z3' , age: 20 , job : '程序员' , friends : ['李四','王五'] , sayName : function(){alert('我的名字!')}}; var p1 = new Person();var p2 = new Person(); p1.friends.push('赵六');alert(p1.friends); //李四,王五,赵六alert(p2.friends); //李四,王五,赵六alert(p1.sayName == p2.sayName); //true
因此,我们通常使用原型和构造函数式
function Person(name , age , friends , job){ this.name = name ; this.age = age ; this.friends = friends ; this.job = job ;}Person.prototype = { constructor: Person , //不考虑被遍历的问题 sayName : function(){ alert(this.name); }};var p1 = new Person('z3' , 20 , ['王五','赵六'] , '技术总监');var p2 = new Person('李四', 25 , ['王五','赵六' ,'赵7'] ,'boss');alert(p1.friends); //王五,赵六p1.sayName(); //z3alert(p2.friends); //王五,赵六,赵7p2.sayName(); //李四
动态原型模式
就是把信息都封装到函数中,这样体现了封装的概念
function Person(name , age , friends , job){ this.name = name ; this.age = age ; this.friends = friends ; this.job = job ; //动态原型方法: if( typeof this.sayName != 'function'){ Person.prototype.sayName = function(){ alert(this.name); }; }}
稳妥构造函数式
所谓稳妥模式就是没有公共属性,而且其他方法也不引用this对象,稳妥模式最适合在安全的环境中使用。如果你的程序对于安全性要求很高,那么非常适合这种原型模式
function Person(name , age , job){ // 创建一个要返回的对象 var obj = new Object(); //可以定义一下私有的变量和函数 private var name = name ; //var sex = '男'; //var saySex = function(){}; //添加一个方法 obj.sayName = function(){ alert(name); } return obj ; }var p1 = new Person('张三');p1.sayName();
阅读全文
0 0
- javascript原型对象存在的问题(3)
- javascript--面向对象(三)原型对象存在的问题及组合组合使用原型和构造函数
- 原型对象存在的问题与解决问题
- JavaScript中原型链存在的问题解析
- javascript回顾系列之原型链存在的两个问题
- JavaScript的原型对象
- JavaScript的原型问题
- JavaScript原型、原型链、对象的创建
- 传统构造函数存在的问题以及解决方法(原型)
- JavaScript使用原型方式创建对象所带来的问题
- JavaScript 的原型对象 Prototype
- Javascript的对象及原型
- JavaScript的对象与原型
- Javascript中对象的原型和对象的原型对象
- javascript 函数对象的原型与普通对象的原型
- Javascript面向对象之:原型(prototype)和基于原型的对象系统
- JavaScript面向对象(3)——原型与基于构造函数的继承模式(原型链)
- javascript 面向对象(六)原型的特性和作用
- vue2.0 popwindow
- 微信公众号之access_token获取与管理
- 基于python包scikit-learn的数据预处理方法
- 收藏了也不看的JavaScript,面向对象程序设计(下)!
- jstl标签引入
- javascript原型对象存在的问题(3)
- linux系统下查看历史命令
- C语言程序设计50例(经典收藏)
- CSS初步1
- 数据结构期末课程大总结
- matlab try...catch...end
- 阿里架构师告诉你一套能成为Java架构师的体系是什么样的
- 【ZJOI 2015 幻想乡战略游戏】【动态点分治】
- Git使用手册:git checkout 创建分支、切换分支