博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript原型对象存在的问题(3)
阅读量:4290 次
发布时间:2019-05-27

本文共 1710 字,大约阅读时间需要 5 分钟。

原型对象虽然可以对所有实例的属性和方法共享,但是它的局限性也是很明显的,这是因为共享的特性,也导致原型存在的最大问题,原型里的属性和方法会被所有对象所共享: 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();

转载地址:http://rhrgi.baihongyu.com/

你可能感兴趣的文章
Spring 中Bean 的生命周期
查看>>
为什么要用枚举实现单例模式(避免反射、序列化问题)
查看>>
微服务架构下的分布式限流方案思考
查看>>
全网最详细的一篇SpringCloud总结
查看>>
消息中间件中的有序消息,其实是排队但是不能插队
查看>>
mysql为什么使用B+树作为索引的结构
查看>>
mysql索引总结(1)-mysql 索引类型以及创建(文章写的不错!!!)
查看>>
聊聊CAS - 面试官最喜欢问的并发编程专题
查看>>
Spring Boot 中使用一个注解轻松将 List 转换为 Excel 下载
查看>>
高并发环境下,先操作数据库还是先操作缓存?
查看>>
MySQL Explain详解
查看>>
一直搞不清楚什么是读写分离,主从复制的原理,今天总算搞懂了
查看>>
消息队列 mq 必会面试题
查看>>
线程池的工作原理是啥?能手写一个线程池吗?
查看>>
Java程序内存的简单分析
查看>>
Javascript单例模式概念与实例
查看>>
SQL NULL 函数
查看>>
多例设计模式
查看>>
WebView的JavaScript与本地代码三种交互方式
查看>>
WebView的JavaScript与本地代码三种交互方式
查看>>