标签:style blog http color io os 使用 java ar
JavaScript没有特殊的语法来表示对象的私有属性和方法,默认的情况下,所有的属性和方法都是公有的。如下面用字面声明的对象:
var myobj = { myprop: 1, getProp: function () { return this.myprop; } }; console.log(myobj.myprop); // `myprop` is publicly accessible console.log(myobj.getProp()); // getProp() is public too
function Gadget() { this.name = ‘iPod‘; this.stretch = function () { return ‘iPad‘; }; } var toy = new Gadget(); console.log(toy.name); // `name` is public console.log(toy.stretch()); // stretch() is public
function Gadget() { // private member var name = ‘iPod‘; // public function this.getName = function () { return name; }; } var toy = new Gadget(); // `name` is undefined, it‘s private console.log(toy.name); // undefined // public method has access to `name` console.log(toy.getName()); // "iPod"
function Gadget() { // private member var specs = { screen_width: 320, screen_height: 480, color: "white" }; // public function this.getSpecs = function () { return specs; }; }
var toy = new Gadget(), specs = toy.getSpecs(); specs.color = "black"; specs.price = "free"; console.dir(toy.getSpecs());
var myobj; // this will be the object (function () { // private members var name = "my, oh my"; // implement the public part // note -- no `var` myobj = { // privileged method getName: function () { return name; } }; }()); myobj.getName(); // "my, oh my"
如果用即时函数返回这个新建的对象,效果也相同:
var myobj = (function () { // private members var name = "my, oh my"; // implement the public part return { getName: function () { return name; } }; }()); myobj.getName(); // "my, oh my"
function Gadget() { // private member var name = ‘iPod‘; // public function this.getName = function () { return name; }; } Gadget.prototype = (function () { // private member var browser = "Mobile Webkit"; // public prototype members return { getBrowser: function () { return browser; } }; }()); var toy = new Gadget(); console.log(toy.getName()); // privileged "own" method console.log(toy.getBrowser()); // privileged prototype method
var myarray; (function () { var astr = "[object Array]", toString = Object.prototype.toString; function isArray(a) { return toString.call(a) === astr; } function indexOf(haystack, needle) { var i = 0, max = haystack.length; for (; i < max; i += 1) { if (haystack[i] === needle) { return i; } } return ?1; } myarray = { isArray: isArray, indexOf: indexOf, inArray: indexOf }; }());
myarray.isArray([1,2]); // true myarray.isArray({0: 1}); // false myarray.indexOf(["a", "b", "z"], "z"); // 2 myarray.inArray(["a", "b", "z"], "z"); // 2
myarray.indexOf = null; myarray.inArray(["a", "b", "z"], "z"); // 2
JavaScript基础对象创建模式之私有属性和方法(024)
标签:style blog http color io os 使用 java ar
原文地址:http://www.cnblogs.com/Bryran/p/3976143.html