prototype的理解

<!doctype html>
<html>
    <head>
        <title></title>
        <meta charset = "utf-8"/>
    </head>
<style type="text/css"></style>

<script type="text/javascript">
//把原型想象成模子
function Person(){
}
//prototype:是函数的属性(原型),每个函数对象都有该属性;构造函数当然也有该属性。
Person.prototype.name="张三丰";//原型的属性
Person.prototype.sex="男";
Person.prototype.age=27;
Person.prototype.eat=function(str){
    alert(this.name+"在吃这"+str);
}

//所有用Person构造函数产生的实例(对象),都共享同一个 prototype属性;
var p1 = new Person();
//alert(p1.name);//读取的是prototype里的name属性的值

var p2 = new Person();
//alert(p2.name);//读取的是prototype里的name属性的值

//p1.name="张四丰"; //不是给prototype里的name属性的赋值,在赋值时,会自动产生一个实例属性name,属于自己
/*
alert(p1.name);//是实例的属性(属于自己特有的内存空间),而不是原型里的name属性的值
alert(p2.name);//读取的是原型里的name属性的值。
*/

//alert(Person.prototype.name);
//alert(p2.prototype.name);

alert(p2.__proto__.name);//实例必须通过__proto__来访问原型的属性
alert(p1.__proto__.name);//实例必须通过__proto__来访问原型的属性
alert(p1.name);//如果有实例属性,则显示实例属性,如果没有,显示原型的属性。

</script>
<body >
</body>
</html>
时间: 2024-08-06 20:01:24

prototype的理解的相关文章

prototype原型理解

一切都是对象,对象是若干属性的集合 数组是对象.函数是对象.对象还是对象.对象里面的一切都是属性,只有属性,没有方法.方法也是属性. 一切引用类型都是属性 怎么判断一个值是否是对象? 值类型的类型判断用 typeof , 引用类型的类型判断用 instanceof 对象都是通过函数创建的    //  对象是由构造函数 Object() 创建的 原型对象 每一个函数function都有一个prototype , 即原型. prototype有一个默认的属性constructor , 指向这个函数

JS中对于prototype的理解

JS中的prototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原型为A. 2 javascript的方法可以分为三类: a -> 类方法 b -> 对象方法 c -> 原型方法 例子: function People(name){ //对象属性 this.name=name; //对象方法 this

javascript构造函数.prototype原型理解 函数.call() 方法克隆的理解

直接创建object对象 var stu = new Object(); 或 var stu = {}; stu.name="zhangsan"; stu.age = "18"; stu.fun = function(){ alert("我叫张三"); } 你也可以用讲stu当作一个模块,模块里面有多个对象,如下实例为一个简单的购物车系统的模块!var shoppingCar = {} shoppingCar.carInfo = function

javascript prototype 初步理解

阅读 “華安” 写的 JavaScript中对象的prototype属性 的个人理解 此段代码仅仅是为了理解prototype而写的, 还有许多需要修改的地方,若想了解更多,还是建议阅读 華安 本人写的 js实现继承等多篇文章 function point(x,y){ if(x) this.x = x; if(y) this.y = y; } point.prototype.x=0; point.prototype.y=0; /** 将一个对象设置为一个类型的原型,相当于通过实例化这个类型,为对

关于js的原型链,__proto__,prototype的理解

首先声明参考博文,感谢 http://blog.sina.com.cn/s/blog_6c62f4330102wq0u.html http://blog.csdn.net/leadn/article/details/51781539 等作者,还有一些其他链接这里就不粘贴了 js中关于prototype的文章不少,今天自己写一点自己的理解 不喜欢上来就粘概念,因为如果概念能够理解,也不需要写这篇文章了. 关于原型链里面的东西,主要就是prototype,__proto__这两个属性难以理解,今天我

对JS prototype的理解

1.什么是prototype? function F() {} f1 = new F();f2 = new F(); 以上的代码,F()是一个构造函数,f1和f2是由这个构造函数产生的对象. prototype是构造函数的一个属性,它的值就是由这个构造函数构造出来的对象的原型对象.(换句话来说,prototype既是构造函数的属性,也是由这个构造函数构造出来的对象的原型对象) 原型对象的属性和方法都会被"继承",换句话来说,F.prototype的属性和方法都会被f1和f2"

关于 this 和 prototype 的理解

1:this 的理解比较好的书是 <Javascript语言精粹> 平时我们全局写 var a = 1, 其实就是 window.a = 1; var f = function(){}, 其实就是 window.f = function(){} 当执行 f(), 相当于执行 window.f(), 那么f 里的 this 是调用它的对象, 即window var obj = {f: function(){} }, 当执行 obj.f(); 那么调用 f 的是 obj对象, 则 f 里的 thi

语法——原型prototype深入理解

console.log('-----------------------------Object'); var obj = {}; console.log(obj.__proto__ === Object.prototype); // true console.log(Object.prototype); // Object console.log(obj.prototype); // undefined console.log('-----------------------------Fun

关于constructor与 Prototype的理解

constructor:每一个函数的Prototype属性指向的对象都包含唯一一个不可枚举属性constructor,该属性的值是这么一个对象:constructor指向了它所在的构造函数Prototype:每一个函数都包含一个prototype属性,这个属性指向的是一个对象的引用:而对已每一个函数(类)的实例都会从prototype属性指向的对象上继承属性,换句话说通过同一个函数创建的所有对象都继承一个相同的对象. function Person(name) { this.name = nam