prototype的入门基础
来源:互联网 发布:windows ntp客户端配置 编辑:程序博客网 时间:2024/06/07 20:24
私有变量和函数
function Obj(){ var a=0; //私有变量 var fn=function(){ //私有函数 alert(0) } }
var objs=new obj();
console.log(objs.a);--------undefined
objs.fn()---------undefined
因为 他们是局部变量即使实例化它也不能访问内部的私有变量和方法。
当我们定义一个函数通过.来添加属性和方法时,我们可以访问,但是他的实例却不可以
function Obj(){ } Obj.a=0; //静态变量 Obj.fn=function(){ //静态函数 } console.log(Obj.a); //0 console.log(typeof Obj.fn); //function var o=new Obj(); console.log(o.a); //undefined console.log(typeof o.fn); //undefined
如果我们想通过面向对象的方法来定义属性和方法,然后通过实例化访问。
function Obj(){ this.a=[]; //实例变量 this.fn=function(){ //实例方法 console.log("1"); } } console.log(typeof Obj.a); //undefined console.log(typeof Obj.fn); //undefined var o=new Obj(); console.log(o.a); //[] o.fn(); //1
但是在上述的例子中添加
var o1=new obj(); // 再次实例化那个obj
o1.fn=function(){console.log("222")} 从写他的方法。
o.fn()和o1.fn()都是从写fn这个函数。但是得到的结果却是不一样的。如果我们实例化很多这个函数那就得写很多属性和方法到function obj()里面。可能就导致代码冗余。
这是我们就想到了prototype。。。这个属性是任何函数都有的。我们可以在它里面定义很多的属性和方法添加到原有的那个对象里面,不需要在开始的时候定义写很多空的属性和方法了
function Person(){ }我们可以看出它自带了prototype的属性了。
我们只需要为
function Person(name){ this.name=name; } Person.prototype.printName=function(){ alert(this.name); } var person1=new Person('Byron');----Byron var person2=new Person('Frank');-----Frank
当我们想要找到某个对象的某个属性的时候会先在哪个对象里面找,找不到再到原型prototype里面找。而prototype还有自己的prototype,一直往里面找,直到找到为止。
function Person(name){ this.name=name; } Person.prototype.share=[]; var person=new Person('Byron'); person.share=0; console.log(person.share); //0而不是prototype中的[]
阅读全文
0 0
- prototype的入门基础
- Prototype 入门
- JavaScript基础(1)prototype的理解?
- javascript基础:prototype对象的继承
- Prototype入门学习
- Prototype入门学习
- Prototype入门学习
- Prototype入门_ajax
- Prototype入门学习
- javacript prototype基础
- Prototype基础类
- Prototype入门_chp2 - [Prototype/script.aculo.us]
- 基础的prototype.js常用函数及其用法
- 【js基础】js中_proto_ prototype constructor之间的关系
- sqlite的入门基础
- UML的入门基础
- JAVA的入门基础
- maven的基础入门
- 斐波那契数列实用解法
- Android---创建定时任务
- 自然语言处理学习(二):概率化的上下文无关文法
- mybatis异常:Improper inline parameter map format. Should be: #{propName,attr1=val1,attr2=val2}
- 20170911_const在类中的应用
- prototype的入门基础
- 2816:红与黑
- Django学习(基础入门下篇)
- 用phantomjs在linux中截图,发现图片中的中文不显示,为一堆框框,解决如下:
- 隐藏系统自带标题栏无效问题的解决
- EXCHANGE 2016 删除默认数据库
- 扩展运算符
- Java开发微信公众账号支付接口
- cocos2dx 入口类AppDelegate.cpp及屏幕适配