js 高级开发:对象属性prototype,自定义命名空间,自定义继承,闭包封装
2018-01-19 09:24
686 查看
<script> /* 自定义命名空间 */ function namespace(namespaceString) { var temp = [];//声明了一个空的数组 var array = namespaceString.split("."); for (var i = 0; i < array.length; i++) { temp.push(array[i]); /** * 把多个json对象添加了window上 */ eval("window." + temp.join(".") + "={}"); //把多个function添加到了window上 //eval("window."+temp.join(".")+"=function(){}"); } } /* 引入包 */ namespace("pj.js.extend");//引用继承方法 namespace("PJ.fn"); namespace("PJ.fn.init"); /* 自定义继承 */ pj.js.extend = function(destination, source) { if (typeof destination == "object") {//destination是一个json对象 if (typeof source == "object") {//source是一个json对象 //把source中的每一个key,value值赋值给destination for ( var i in source) { destination[i] = source[i]; } } } if (typeof destination == "function") { if (typeof source == "object") { for ( var i in source) { destination.prototype[i] = source[i]; } } if (typeof source == "function") { destination.prototype = source.prototype; } } return destination; } function Entity() { } Entity.prototype.id = 1; function Model() { } //Model继承Entity pj.js.extend(Model, Entity); Model.prototype.name = "张三"; var mm = new Model(); console.log(mm.id); console.log(mm.name); //闭包:匿名函数 案例1 (function(num) { console.log(num); })(3); //闭包:案例2 function PJEntity(idp, namep) { var id = idp; var name = namep; }; (function(window, id, name) { PJEntity.prototype = { doing : function(fn) { console.log("正在做"); }, asking : function(fn) { console.log("正在说"); }, } var PJ = function() { return new PJEntity(1, "pj---001"); }; window.PJ = PJ; })(window); var pj = window.PJ(); pj.doing(); pj.asking(); </script>
相关文章推荐
- jQuery命名空间,自定义空间及属性,插件开发全解析
- jQuery命名空间,自定义空间及属性,插件开发全解析
- javascript封装继承圣杯模式 和 命名空间,this,属性表示法介绍
- jQuery命名空间,自定义空间及属性,插件开发全解析 (转)
- jQuery命名空间,自定义空间及属性,插件开发全解析
- 变量对象,作用域链,闭包,匿名函数,this关键字,原型链,构造器,js预编译,对象模型,执行模型,prototype继承
- 一切皆对象之两个方法概括js,无函数签名(无多态),原型,闭包,封装,引用类型,继承……
- JS命名空间、对象封装
- JS(十六)继承模式,命名空间,对象枚举(下)
- Android开发小记:命名空间错误导致自定义属性不生效
- js对象、构造函数、命名空间、方法、属性
- js对象、构造函数、命名空间、方法、属性
- js模块,类,继承,命名空间,私有属性等相关概念梳理
- JS(十五)继承模式,命名空间,对象枚举(上)
- jQuery命名空间,自定义空间及属性,插件开发全解析
- 利用prototype属性自定义对象,实现对象继承等面向对象设计
- js模块,类,继承,命名空间,私有属性等相关概念梳理
- 自定义对象、prototype原型属性
- 使用伪命名空间封装保护独自创建的对象方法
- 【laravel5.4】PHP5.6+ 调用命名空间下类方法、属性和对象