//回顾构造函数
function Box(name, age) {
this.name = name; //实例属性
this.age = age;
this.run = function() { //实例方法
return this.name + this.age;
}
}

  

//原型
function Box() {} //构造函数体内什么都没有,如果有就是实例属性或者实例方法
Box.prototype.name = 'Lee'; //原型属性
Box.prototype.age = 100; //原型属性
Box.prototype.run = function () { //原型方法
return this.name + this.age;
};
var box1 = new Box();
var box2 = new Box();
alert(box1.name); //Lee
alert(box1.age); //100
alert(box1.run()); //run是一个方法,run()是一个值

  

        function Box() {}                   //构造函数体内什么都没有,如果有就是实例属性或者实例方法
Box.prototype.name = 'Lee'; //原型属性
Box.prototype.age = 100; //原型属性
Box.prototype.run = function () { //原型方法
return this.name + this.age;
};
var box1 = new Box();
var box2 = new Box(); //原型属性和实例属性的区别是共享,共享保持一致,
//如果是实例方法,不同的实例化,他们的方法地址是唯一的不一样的
//如果是原型方法,那么他们的地址是共享的,大家都一样
alert(box1.run == box2.run); //true,说明是地址共享的。
alert(box1.__proto__); //访问的是一个指针,指向prototype原型对象
alert(box1.constructor); //构造属性,可以获取构造函数本身
//作用是被原型指针定位,,然后得到构造函数本身
//其实就是对象实例对应的原型对象的作用
//IE浏览器不能访问,但是别的浏览器虽然能访问却不能获取内部信息
//返回的是[object,object];

  

删除实例中的属性
delete box1.name;                   //删除实例中的属性
alert(box1.name); //Lee,本来是jack,因为实例中的属性删除了所以为Lee;

  

覆盖原型中的属性
 Box.prototype.name = 'LLL';         //覆盖原型中的属性;
alert(box1.name); //LLL覆盖原型中的属性;

  

hasOwnProperty()判断属性是在实例中
alert(box1.hasOwnProperty('name'));     //false;说明属性不在实例中
box1.name = 'j';
alert(box1.hasOwnProperty('name'));//true;说明属性在实例中

  判断只有在原型中的属性

//只有原型中的属性
function isProperty(object, protety) {
return !object.hasOwnProperty(protety) && (protety in object)
}
alert(isProperty(box1, 'name'));//true,此刻就原型中有属性name,所以是true,如果
//把原型中的name删除,那么就是false
box1.name = 'hello';
alert(isProperty(box1, 'name'));//false,因为isProperty这个函数是判断原型中是否有name
//属性,此刻实例中给了box1的一个name属性

  有错误希望能帮我提出来,我会改正

最新文章

  1. java设计模式之简单工厂模式
  2. Android 常用代码
  3. Maven-常用命令
  4. bootstrap插件学习-bootstrap.collapse.js
  5. Android二-.9.png
  6. UVA 408 Uniform Generator 伪随机数(水)
  7. sql 中条件in参数问题
  8. Android中改变dialog的显示的位置和大小
  9. 移动web前端的一些硬技能(二)动手前必须掌握的基本常识
  10. 怎么做fastreport使用离线数据源
  11. 页面加载完毕执行多个JS函数
  12. 刨根究底字符编码之四——EASCII及ISO 8859字符编码方案
  13. Re.findall() & Re.finditer()的用法
  14. 【Java学习笔记之十七】Java中普通代码块,构造代码块,静态代码块区别及代码示例分析
  15. 解决:HTTP 错误 404.0 - Not Found.您要找的资源已被删除、已更名或暂时不可用。(记录帖)
  16. 看uboot的时候发现随机数的另外一种算法
  17. 基础总结(02)--BFC(块级格式化上下文)
  18. django rest framework mixins小结
  19. Shader-另类实现
  20. Git 打标签(分布式版本控制系统)

热门文章

  1. 由于jsp include 很多文件后导致java类大小超过65535 bytes 的解决方法(转载)
  2. G - Bullseye
  3. C++_基础_C与C++的区别
  4. PHP搭建(windows64+apache2.4.7+mysql-5.6+php5.5)
  5. django接收和发送json数据
  6. 使用委托解决"线程间操作无效: 从不是创建控件“textBox1”的线程访问它" 问题
  7. QT5删除隐藏目录+隐藏文件
  8. nginx自定义模块编写-根据post参数路由到不同服务器
  9. javascript 跨域汇总
  10. chart