标签:csdn console return 包含 cti net 实例 prototype 构造
引用:https://blog.csdn.net/liwenfei123/article/details/77964222
function product(){ var name=‘yuxiaoliang‘; this.getName=function(){ return name; } } var obj=new product(); console.log(obj.getName()) // "yuxiaoliang"
function Person(name){ this.getName=function(){ return name; }; this.setName=function(value){ name=value; }; } var person=new Person(‘Lee‘); alert(person.getName());//‘Lee‘ person.setName(‘lwf‘); alert(person.getName());//‘lwf‘
(function(){ //私有变量和私有函数 var privateVariable = 10; function privateFunction(){ return false; } //构造函数 MyObject = function(){ } //公有/特权方法 MyObject.prototype.publicMethod = function(){ privateVariable ++; return privateFunction(); } })(); var object = new MyObject(); console.log(object.publicMethod());//false
上面模式在定义构造函数时并没有使用函数声明,而是使用了函数表达式。函数声明只能创建局部函数,我们需要在私有作用域外面使用构造函数。声明MyObject时也没有使用var,这样MyObject就成了一个全局变量,能够在私有作用域之外被访问。
由于特权方法是在原型上定义的,因此所有的实例都使用同一个函数,而这个特权方法,作为一个闭包,总是保存着对包含作用域的引用。
(function(){ var name = ‘‘; Person = function(value){ name = value; } Person.prototype.getName = function(){ return name; } Person.prototype.setName = function(value){ name = value; } })(); var person1 = new Person(‘Tom‘); var person2 = new Person(‘Lucy‘); console.log(person1.getName());//Lucy console.log(person2.getName());//Lucy
标签:csdn console return 包含 cti net 实例 prototype 构造
原文地址:https://www.cnblogs.com/xiaoyuchen/p/10547952.html