javaScript prototype

对js对象原型的测试:

<html>
<head>
<title>
了解prototype
</title>
<script type="text/javascript">
function baseClass(){
//对象方法
this.showMsg=function(){
   console.log("baseClass::showMsg");
}
}

function extendClass(){
//对象方法
  this.upd=function(){
  console.log("this.upd");
  }
}

extendClass.prototype=new baseClass();   //克隆base到extendClass,此时extendClass已经含有方法showMsg
extendClass.prototype.updFun=function(){
  console.log("updFun is called");
}    //在extendClass添加原型方法updFun,和在extendClass加一个此方法一样,主要区别是这样可以添加方法,而不修改原本的类,而且这个又可以当成类方法,可以直接调用

//类方法
extendClass.updClass=function(args){
    console.log("updClass");  
}

//原型方法,但对应的是一个json,当extendClass初始化的时候,会调用baseas的匿名方法
extendClass.prototype.updd={
  baseas:(function(args){
     //args即是window
    console.log("has in based");
	console.log(args);
  })(window),
    //非匿名方法,不会主动调用,如何调用还不知道
  base2:function(args){
    console.log("has in badsed2222");
	console.log(args);
  }
}
var instance=new extendClass();
extendClass.prototype.updFun();
//不能写成instance.updClass,对象上没有该方法,和原型方法区别比较明显
extendClass.updClass();
//调用对象方法
instance.showMsg();
//调用原型方法,和extendClass.prototype.updFun()一样
instance.updFun();
//调用upd方法
instance[‘upd‘].call();
//如果有xbig,则使用,否则就是{}
 var xbig= xbig||{};
console.log("xbig:"+JSON.stringify(xbig));  //xbig:{}
//给xbig的ins赋值json串,fb对应的是方法
 xbig.ins={fa:"1",fb:function(){
 console.log("fb");
}}
 xbig.ins.module= {upd:function(args){
  //call的第一个参数为this,第二个参数是args,在这个方法内部,可以操作this,如果是一个节点,则可以修改节点的值
   console.log(this);
   console.log("I`d like to do");
   console.log("args:"+args);
}};
xbig.ins.module[‘upd‘].call({a:1},"somesthing1");
var xbig2= xbig||{};    
console.log("xbig2:"+JSON.stringify(xbig2));  //xbig2:{"ins":{"fa":"1","module":{}}}
xbig2.ins.module[‘upd‘].call(instance,"somesthing2");
</script>
</head>
<body>
<h1>prototype到底是什么意思1</h1>
</body>
</html>
时间: 2024-10-13 17:58:45

javaScript prototype的相关文章

JavaScript prototype 使用介绍

JavaScript prototype 使用介绍 用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了,最近看了一些 JavaScript高级程序设计,终于揭开了其神秘面纱 用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访

JavaScript prototype 详解(对prototype 使用的一些讲解)

对JavaScript有一定了解的你,对jquery不陌生吧,那你看jQuery源代码的时候对prototype 也一定有见过,如果对prototype有疑问或者想更深入的去了解与使用它,欢迎你继续往下阅读. 最初的用法是, 为了避免方法在构造器里随机数据被实例化时而产生重复的副本  后来被用在"继承"上面了, 注意, JS语义上是没有继承的, 这里说的是人为的实现.对于下面对JavaScript中类型名称叫做"对象"."函数"."类型

[原创]javascript prototype 对象 函数 &lt;精简的美丽......&gt;

精简的美丽...... javascript prototype 对象 函数 在javascript中我们都知道创建一个对象使用如下代码var x = {}对象可以拥有属性和方法var x = {    value : 0,    add : function(a,b){        return a + b;    }} 而创建一个函数时,使用var fx = function(){}    <func1>或function fx(){}            <func2>

JavaScript prototype原型用法

JavaScript对象原型 所有JavaScript对象都从原型继承属性和方法. <!DOCTYPE html> <html> <meta charset="utf-8"> <title>js</title> <body> <h2>JavaScript 对象</h2> <p id="demo"></p> <script> functi

JavaScript prototype 属性

定义和用法 prototype 属性允许您向对象添加属性和方法 注意: Prototype 是全局属性,适用于所有的Javascript对象. 语法 object.prototype.name=value 实例 适用 prototype 属性给对象添加属性: <script> function employee(name,jobtitle,born) { this.name=name; this.jobtitle=jobtitle; this.born=born; } var fred=new

JavaScript prototype详解

用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了,最近看了一些 JavaScript高级程序设计,终于揭开了其神秘面纱. 每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性,也就是说将函数用作构造函数调用(使用new操作符调用)的时候,新创建的对象会从原型对象上继承属性和

JavaScript prototype备忘

__proto__:所有对象都有的属性. var obj = {}; console.log(obj.__proto__); //{} var obj1 = new Object(); console.log(obj1.__proto__); //{} var func = function() {}; console.log(func.__proto__); //[Function:Empty] prototype:函数对象中的属性. var obj = {}; var func = func

javascript prototype学习

function foo(a, b, c) { return a*b*c; } alert(foo.length); alert(typeof foo.constructor); alert(typeof foo.call); alert(typeof foo.apply); alert(typeof foo.prototype); 对于上面的代码,用浏览器运行后你会发现: length: 提供的是函数的参数个数 prototype: 是一个object 其它三个都是function 而对于任何

javascript prototype和__proto__

< script type = "text/javascript" >function Person() { // 属性 this.head = 1; this.eye = 2; // 方法 this.eat = function () { alert("吃东西"); } } //扩展类的方法 Person.prototype.run =function(){ alert("我会跑步"); } function Programmer(