javascript私有属性失效及解决方案
1.js创建私有属性的方法
在 javascript 中所有对象的成员是公有的 构造函数也是如此:
 function Gadget ( ) {
     this.name = ' jack ';
     this.putName = function ( ) {
         return (' this is jack ');
     }
 }
 var obj = new Gadget();
 console.log( obj.name );   //jack
 console.log( obj.putName ); //this is jack 
 function Gadget ( ) {
     var name = ' jack ';
     this.putName = function ( ) {
         return name;
     }
 }
 var obj = new Gadget();
 console.log( obj.name );   //  undefined
 console.log( obj.putName ); //   jack 
2.私有属性失效和解决办法
当私有属性是数组或者是对象的时候返回给外部,外部是可以对返回的值进行修改,因为他们不是单纯的对值复制,而是对引用的复制
 function Gadget () {
   //私有  对象或者数组
   var specs = {
     _widt: 10,
     _height: 100,
     _color: "red"
   };
   //方法 共有
   this.getSpecs = function () {
     return specs;
   }
 }
 var obj = new Gadget();
 var specs = obj.getSpecs();
 specs._color = "black";
 console.dir(obj.getSpecs());


为了避免这样的情况,我们可以不将对象或数组直接返回,而是新声明一个对象,将其赋值部分或全部数据返回给用户:
 this.getSpecs = function () {
     var color = {
       width: specs._width,
       height: specs._height,
       color: specs._color
     }
     return color;
   }

也可以通过利用对对象的深复制,返回复制后的新对象
javascript私有属性失效及解决方案的更多相关文章
- JavaScript中的私有属性
		
一.使用构造函数获得私有属性: function Gadget(){ var name = 'iPod'; this.getName = function(){ return name; }; }; ...
 - JavaScript基础对象创建模式之私有属性和方法(024)
		
JavaScript没有特殊的语法来表示对象的私有属性和方法,默认的情况下,所有的属性和方法都是公有的.如下面用字面声明的对象: var myobj = { myprop: 1, getProp: f ...
 - JavaScript实现私有属性
		
原文:JavaScript实现私有属性 JavaScript被很多人认为并不是一种面向对象语言,原因有很多种,比如JavaScript没有类,不能提供传统的类式继承:再比如JavaScript不能实现 ...
 - JavaScript 新语法详解:Class 的私有属性与私有方法
		
译者按: 为什么偏要用 # 符号? 原文:JavaScript's new #private class fields 译者:Fundebug 本文采用意译,版权归原作者所有 proposal-cla ...
 - JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
		
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
 - css3浏览器私有属性前缀使用详解
		
什么是浏览器私有属性前缀 CSS3的浏览器私有属性前缀是一个浏览器生产商经常使用的一种方式.它暗示该CSS属性或规则尚未成为W3C标准的一部分. 以下是几种常用前缀 -webkit- -moz- -m ...
 - iOS13适配/黑暗模式的适配/KVC访问私有属性/模态弹窗ViewController 默认样式改变 /LaunchImage即将废弃/蓝牙的权限申请/推送Device Token适配/UIKit 控件变化/StatusBar新增样式
		
目录 1. KVC访问私有属性 2. 模态弹窗ViewController 默认样式改变 3. 黑暗模式的适配 4. LaunchImage即将废弃 5. 新增一直使用蓝牙的权限申请 6. Sign ...
 - JavaScript document属性和方法
		
JavaScript document属性和方法 --------------------------------------------属性: 1. Attributes 存储节点的属性列表 ...
 - 浏览器 私有属性&内核
		
-moz代表firefox浏览器私有属性 -ms代表IE浏览器私有属性 -webkit代表chrome.safari私有属性 IE使用的是Trident内核,Firefox 使用的是Gecko内核.目 ...
 
随机推荐
- Net中的代码规范工具及使用
			
Net中的代码规范工具及使用 https://www.cnblogs.com/selimsong/p/9209254.html 上一篇文章介绍了编码标准中一些常用的工具,本篇就具体来介绍如何使用它们来 ...
 - VIM中保存编辑的只读文件
			
如何在VIM中保存编辑的只读文件 你是否会和我一样经常碰到这样的情景:在VIM中编辑了一个系统配置文件,当需要保存时才发现当前的用户对该文件没有写入的权限.如果已 经做了很多修改,放弃保存的确很懊恼, ...
 - 编译webrtc for android库与apk
			
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git export PATH=`pwd`/depot_t ...
 - WCF服务返回XML或JSON格式数据
			
第一种方式public string GetData( string format) { string res = null; Student stu = new Student { StuID = ...
 - Navicat Premium创建事件计划调用MySql存储过程
			
1.检查事件计划,操作:工具——命令行界面——执行命令 show variables like '%event_scheduler%'; (分号不能丢)—— event_scheduler ON 表 ...
 - Unix环境高级编程—进程控制(二)
			
一.函数wait和waitpid 今天我们继续通过昨天那个死爹死儿子的故事来讲(便于记忆),现在看看wait和waitpid函数. #include<sys/wait.h> pid_t w ...
 - html学习笔记(2)-字母大小写转换练习
			
主要应用了text-transform属性值: uppercase:所有单词的字母都大写: lowercase:所有单词的字母都小写: capitalize:每个单词的首字母都大写: none:默认值 ...
 - cmake policy
			
1 cmake policy是什么? cmake policy可以理解为cmake的语法标准,也就是说,它规定了cmake在解析CMakeLists.txt文件时的行为. 2 cmake policy ...
 - sap crm 常用表
			
[转自 http://blog.csdn.net/zhongguomao/article/details/6714616] SAP CRM 参数文件集目标组常用表: CRMD_MKTTG_TG_T C ...
 - matlab 在机器视觉中常用的函数
			
~ triangulate() 三角化(获得距离)匹配点 ~ undistortImage() 去除相机畸变并生成图像