JavaScript对象创建的几种方式总结
2018-02-25 13:15
645 查看
JavaScript对象创建的几种方式总结
1.通过 对象字面量 创建单例对象
/** * Created by kikop on 2018/2/25. */var objectLiteralManager = { //如何设置私有是关键,函数中使用时,加 this 限定 defaultName: null, defaultArray: [], setName: function (tmpDefaultName) { this.defaultName = tmpDefaultName; }, setArray: function (tmpArrays) { for (var i = 0; i < tmpArrays.length; i++) { this.defaultArray.push(tmpArrays[i]); } }, getName: function () { //1.正确判断方式 //if (null == this.defaultName) { // this.defaultName = 'undefine value.'; //} return this.defaultName; }, getName_Global: function () { //1.正确判断方式 //if(null ==this.defaultName){ // this.defaultName='undefine'; //} //return this.defaultName; //2.错误使用,这里容易出错 // 不加this ,这里 defaultName是 全局的 defaultName = 'hello'; if (defaultName == undefined) { defaultName = 'undefine'; } return this.defaultName; },};//调试$(function () { //objectLiteralManager.setName('hello,objectLiteralManager'); //console.log(objectLiteralManager.getName()); // //objectLiteralManager.setArray(['a', 'b', 'c']); //console.log(objectLiteralManager.defaultArray); })2.简单模块模式
function BaseComponent() {} function OtherComponent() {} //先赋值(返回对象的匿名函数)函数表达式,再执行var simpleModulePattern = function () { //1.定义私有变量 var privateVar = 10; var components = new Array(); //初始化 components.push(new BaseComponent()); //2.定义私有函数 function privateFunc() { console.log('privateFunc...') //return false; } //3.返回共用方法和属性 return { publicProperty: true, publicMethod: function () { //privateVar++; //指向 私有方法 return privateFunc(); }, getComponentCount: function () { return components.length; }, registerComponent: function (component) { if (typeof component == "object") { components.push(component); } } }}(); //调试$(function () { //simpleModulePattern.publicMethod(); // //simpleModulePattern.publicProperty=false; //console.log(simpleModulePattern.publicProperty); // // // //console.log(simpleModulePattern instanceof Object); //console.log(simpleModulePattern.getComponentCount()); //simpleModulePattern.registerComponent(new OtherComponent()); //console.log(simpleModulePattern.getComponentCount()); })3.增强型模块模式
var advModulePattern = function () { //1.定义私有变量 var components = new Array(); //初始化 components.push(new BaseComponent()); var app = new BaseComponent(); app.getComponentCount = function () { return components.length; }; app.registerComponent = function (component) { if (typeof component == "object") { components.push(component); } }; //3.返回该类型的 app return app; }(); //立即执行 //调试$(function () { //alert(advModulePattern instanceof BaseComponent); //advModulePattern.registerComponent(new OtherComponent()); //alert(advModulePattern.getComponentCount()); //2 });4.属于实例的私有变量
function Person(name) { //1.定义私有变量 var privateVar = 10; //2.定义私有函数 function privateFunc() { //在函数 Person内部可以访问 privateVar privateVar++; console.log('privateFunc...' + privateVar) } //3.定义特权方法 this.getName = function () { return name; }; this.setName = function (tmpName) { name = tmpName; }; this.privateFuncWrap = function () { return privateFunc(); }} //调试$(function () { //var p1 = new Person('kikop'); //console.log(p1.getName()); //p1.privateFuncWrap(); // //var p2 = new Person('kikop2'); //console.log(p2.getName()); //p2.privateFuncWrap(); });5.块级作用域(又叫私有作用域)
(function () { //定义 块级作用域 console.log('here is private range!'); })();6.总结
//函数声明后面不可以跟圆括号//函数表达式后面可以跟圆括号//函数声明加个括号则被提升为函数表达式相关文章推荐
- javascript开发:javascript创建对象的几种方式总结
- JavaScript基础——面向对象的程序设计(一)创建对象的几种方式总结
- JavaScript创建对象的几种方式总结
- Javascript创建对象的几种方式
- JavaScript创建对象的几种方式
- javascript中创建对象的几种方式
- Javascript创建对象的几种方式【转】
- JavaScript对象创建的几种方式
- JavaScript创建对象几种方式
- javascript 创建对象的几种方式
- javascript对象的几种创建方式
- javascript创建对象和属性的几种方式
- JavaScript创建对象方式总结
- javascript创建对象的几种方式
- JavaScript 创建类/对象的几种方式
- Javascript创建对象的几种方式
- JavaScript对象编程- 创建类/对象的几种方式
- 稳扎稳打JavaScript(三)——创建对象的几种方式
- 第184天:js创建对象的几种方式总结
- JavaScript中创建类/对象的几种方法总结