JavaScript中什么是prototype原型对象?它有和作用?

郑小天 装修达人 12

今天装修百科网给各位分享什么是原型对象及作用的知识,其中也会对JavaScript中什么是prototype原型对象?它有和作用?进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在我们开始吧!

JavaScript中什么是prototype原型对象?它有和作用?

在JavaScript中,prototype对象是实现面向对象的一个重要机制。每个函数就是一个对象(Function),函数对象都有一个子对象prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。在通过new创建一个类的实例对象的时候,prototype对象的成员都成为实例化对象的成员。
1、该对象被类所引用,只有函数对象才可引用;
2、在new实例化后,其成员被实例化,实例对象方可调用。
同时,函数是一个对象,函数对象若直接声明成员,不用被实例化即可调用。

动词原形是什么意思

英语中动词原形的定义是什么

JavaScript中什么是prototype原型对象?它有和作用?

javascript原型,原型链 有什么特点

javascript原型,原型链特点:原型链实现了继承。

JS中每个函数都存在有一个原型对象属性prototype。并且所有函数的默认原型都是Object的实例。每个继承父函数的子函数的对象都包含一个内部属性proto。该属性包含一个指针,指向父函数的prototype。若父函数的原型对象的_proto_属性为再上一层函数。在此过程中就形成了原型链。

原型链的作用是用来实现继承,比如我们新建一个数组,数组的方法就是从数组的原型上继承而来的。

var arr = [];

arr.map === Array****totype.map //arr.map

是从arr.__proto__上继承下来的,arr.__proto__也就是Array****totype。

扩展资料:

1.JS中每个函数都存在有一个原型对象属性prototype。并且所有函数的默认原型都是Object的实例。

2.每个继承父函数的子函数的对象都包含一个内部属性_proto_。该属性包含一个指针,指向父函数的prototype。若父函数的原型对象的_proto_属性为再上一层函数。在此过程中就形成了原型链。

3.原型链实现了继承。原型链存在两个问题:a 包含引用类型值的原型属性会被所有实例共享。b 在创建子类型时,无法向超类型的构造函数中传递参数。

参考资料:百度百科-javascript

js 中原型对象的缺点是怎么造成的

原型不是你这样写的,原型两个原则,一如果在对象里面则不能写用原型prototype;如果是在对象外面则如此写:Box****totype.name。这样就可以访问Box.name了

javascript原型方法问题

每个javascript对象都有一个原型对象(简称原型),这个原型是由该对象的构造函数所定义
(javascript自动创建的),并且对象继承原型的所有属性和方法(函数),比如 一个String对象
的原型为 String****totype ,如果我们想要给String类添加方法,可以这样做(比如添加常用的
trim()方法):
js 代码
String****totype.trim = function (){
return this.replace(/(^\s*)|(\s*$)/g, "");
}
这个特性是相当令人惊讶的,因为这破坏了封装性,就好像在Java中你可以对String类直接进行修
改一样。function() 可以当作数据来给左操作数赋值(而不仅仅是当作动作),也跟Java非常地不
同。
对于Javascript内部类都可以这么改,对于自定义类当然可以这么改,如:
js 代码

function Circle(x,y,r){
this.x = x;
this.y = y;
this.r = r;
//this****totype = null ; /*这句代码可以看作是隐含存在的,因为javascript 中“类”
的定义和函数的定义结构上没有差异,所以可以说,所有函数都隐藏有这样一个属性。*/
}
然后,我们给原型加一个得到面积的方法:

Circle****totype.area = function(){
return this.r * this.r * 3.14159 ;
}
可以这样使用:
js 代码
var circ = new Circle(0,0,2) ;
alert(circ.area()) ;
当然,我们也可以在类中很轻松的定义我们想要实现的方法,如,还是上面那个求圆面积:
js 代码
function Circle(x,y,r){
this.x = x;
this.y = y;
this.r = r ;
this.area = function (){
return this.r * this.r * 3.14159 ;
}
}
//调用:
var circ = new Circle(0,0,2) ;
alert(circ.area()) ;
两者的调用代码完全一样,那为什么要使用原型呢?主要是为了解决对内部类型的继承问题,也就
是说当你无法修改String的构造函数而想要让所有String实例都具有某一方法的时候,你可以用这
个prototype;或者说,你用这个prototype来模拟实现String类的子类,达到对父类进行扩展的目
的。