首页
学习
活动
专区
工具
TVP
发布

深入理解模块化编程

因为返回的对象是在自执行函数内部声明的,所以对象中定义的方法可以访问自执行函数内的局部变量,这些方法被具有特权的方法。...模块输出 模块只有一个出口,module.exports对象,我们需要把需要输出的内容放入该模块 加载模块 加载模块使用require()方法,该方法读取一个文件并执行,返回文件内部的module.exprots...对象 例如,我们写了这样一个文件myModule1.js: var name = '无忌'; function sayName(){ console.log(name); }; function.../myModule1.js'); module1.printName(); module1.printFullName('张'); 在node环境下,require方法在引入其他模块的时候是同步的,可以轻松的控制模块的引入顺序...module.exports={ sayName:sayName } }) // cmdModule2.js define(function(require,exports

42920
您找到你想要的搜索结果了吗?
是的
没有找到

编写可维护代码4:不轻易修改对象方法

本篇主要讲下对象的属性与方法的修改问题。由于js中修改对象的属性和方法简直容易至极,所以任何人都可以更改js中的具有可访问可修改权限的对象。...所以为了人生财产安全,在js维护时,个人是不建议对已有对象方法属性进行修改、删除的,除非你是对象的所有者,了如指掌。...通常对于对象想要修改或新增或删除方法属性时,建议是继承个新对象出来,新对象拥有被继承对象的所有属性和方法,且不会影响到原对象在源码中的使用。 js中的继承有两种:基于对象的继承和基于类型的继承。...= Object.create(obj); obj2.sayName(); //nitx //当obj2重新定义sayName()方法时,不会影响到被继承对象中的方法 obj2.sayName...= function(){ console.log('her name is sxm.'); } obj2.sayName(); //her name is sxm. obj.sayName

31420

javascript中常用的创建对象的方法工厂模式构造函数模式原型模式混合使用构造函数模式和原型模式小结

js中创建对象最简单的方法自然是直接new一个Object然后再为其添加属性和方法,例如一下代码: var o = new Object(); o.name = "aaaa"; o.sayName =...实际上,js在使用构造函数模式创建对象的过程中有以下的几个步骤: 创建一个新对象 将对象的作用域赋给新对象 调用构造函数中的代码为属性和方法赋值 返回新对象 其中,我们发现js帮我们封装了1,2,4等步骤...在前面的例子中, stu1 和 stu2 都有一个名为 sayName()的方法,但那两个方法不是同一个 Function 的实例。...** 需要注意的是,如果实例对象和原型对象中的存在相同的属性和方法,那么js会先从实例中搜寻,如果找到了就忽略原型对象中的,如果在实例中没有找到,就继续到原型中寻找 ** 混合使用构造函数模式和原型模式...Person("Nicholas", 29, "Software Engineer"); var person2 = new Person("Greg", 27, "Doctor"); 小结 以上就是js

1.3K30

ES6中的Class回顾总结三:封装与多态

方法一:在命名上加以区别,通常可以约定在类内部方法名前加下划线_来表示一个只限于内部的私有方法,但这种方法其实在外部依然可以被调用,只是一种约定而已,并不保险。...方法二:将私有方法放置在类外部,当类需要调用这个私有方法时,通过apply或call调用。...封装的优势有以下两点: 减少耦合,不该暴露的不暴露 利于对数据、接口进行相应的权限管理 至于多态,在JS中应用的很少。...(){ 20 console.log('I am B'); 21 } 22} 23(new A()).sayName(); 24(new B()).sayName(); 25//打印...但在JS中无需这么麻烦,js的变量类型在运行期是可变的,一个js对象的多态性是与生俱来的,js作为一门动态弱类型语言,在编译时没有类型检查的过程,既没检查创建对象的类型,也没检查传递的参数类型,所以js

1.1K10

浅谈与使用js中的原型

浅谈与使用js中的原型# 1 什么是原型# “ 每个函数都会创建一个 prototype 属性,这个属性是一个对象,包含应该由特定引用类型的实例 共享的属性和方法。...// 工厂模式实现 方法1 function Person(name, age, job) { this.name = name this.age = age this.job = job this.sayName...() // Nicholas person2.sayName() // Greg 从上面代码中可以看到sayName这个方法是在Person函数里面的,每次new的Person的实例时候都需要跟着一起重新创建...() // Nicholas person2.sayName() // Greg 我们将sayName这个方法直接赋值给了Person.prototype,也就是Person的原型,那么后面再通过Person...3 小结# 本文仅是对于原型有个简单的认识也使用,原型在js中是一个比较重要的模块,还有__proto__ 、 原型链 这些概念没有讲到,如果感兴趣,可以再通过书籍及视频来交叉理解。

1K30

js call方法_recall

最近又遇到了JacvaScript中的call()方法和apply()方法,而在某些时候这两个方法还确实是十分重要的,那么就让我总结这两个方法的使用和区别吧。 1....每个函数都包含两个非继承而来的方法:call()方法和apply()方法。 2. 相同点: 这两个方法的作用是一样的。...一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。...call()方法 第一个参数和apply()方法的一样,但是传递给函数的参数必须列举出来。 语法:call([thisObject[,arg1 [,arg2 [,......说明: call方法可以用来代替另一个对象调用一个方法,call方法可以将一个函数的对象上下文从初始的上下文改变为thisObj指定的新对象,如果没有提供thisObj参数,那么Global对象被用于thisObj

84720
领券