js的原型模式
2016-07-03 16:33
363 查看
在js中每个函数都有一个prototype属性,是一个指向某个对象的指针。这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。感觉有点像java语言中的静态变量(注:不过prototype属性是不能改变值的,静态变量是可以改变值)。
prototype属性定义的方式:
function Person(){}
Person.prototype.name = "zhangsan";
Person.prototype.age =23;
Person.prototype.sayHello = function(){
return "hello,I'm zhangsan";
};
1.construtor:所有原型对象都有一个construtor属性,他是指向prototype 属性所在的函数的一个指针,可以用下面语句检测:
alert( Person.prototype.constructor == Person);//true
2.如果对象定义的属性的属性名跟原型的属性名相同,该对象定义的属性将会覆盖原型中的同名属性。
例如: function Person(){}
Person.prototype.name
= "zhangsan";
line1:var person1=new
Person();
line2:person1.name="wangwu";
alert(person1.name) //wangwu
它先会在person对象中搜索name属性,如果没有name属性就在搜索原型的属性中是否有name属性
注,若没有 line2这一行,那么alert(person1.name)将会输出zhangsan
我们也可以通过delete person1.name 删除person1的name属性,从而保证person1.prototype.name不被覆盖
prototype属性定义的方式:
function Person(){}
Person.prototype.name = "zhangsan";
Person.prototype.age =23;
Person.prototype.sayHello = function(){
return "hello,I'm zhangsan";
};
1.construtor:所有原型对象都有一个construtor属性,他是指向prototype 属性所在的函数的一个指针,可以用下面语句检测:
alert( Person.prototype.constructor == Person);//true
2.如果对象定义的属性的属性名跟原型的属性名相同,该对象定义的属性将会覆盖原型中的同名属性。
例如: function Person(){}
Person.prototype.name
= "zhangsan";
line1:var person1=new
Person();
line2:person1.name="wangwu";
alert(person1.name) //wangwu
它先会在person对象中搜索name属性,如果没有name属性就在搜索原型的属性中是否有name属性
注,若没有 line2这一行,那么alert(person1.name)将会输出zhangsan
我们也可以通过delete person1.name 删除person1的name属性,从而保证person1.prototype.name不被覆盖
相关文章推荐
- jsp前3章试题分析
- 05、JS对HTML节点对象的属性操作:
- jsp前三章小测试:错题
- 整理javascript原生错误类型
- js中如何输出空格
- HTML、CSS、JavaScript判断 IE
- javascript-类定义-随
- Jsp ssh
- Jsoup
- 用原生JS实现的一个导航下拉菜单,下拉菜单的宽度与浏览器视口的宽度一样(js+html+css)
- js获取高度遇到的问题
- 解决for循环闭包取值问题
- JavaScript 数组删除重复项
- javaScript基础知识
- 关于JSON解析的深坑之BOM头
- javaScript--02 CSS基础 上
- JavaScript pop() 方法
- JavaScript pop() 方法
- JavaScript pop() 方法
- JavaScript pop() 方法