/*
*对象方法
*类方法
* 原型方法
*/
function People(name) {
this.name = name;
this.say = function () { //对象方法
alert("my name is "+this.name);
}
} People.run = function () { //类方法(静态方法,只能由类名调用)
alert("i can run");
} People.prototype.sayChinese = function () {//原型方法
alert("我的名字是:"+this.name);
} var p1 = new People("menglinghua");
p1.say();
People.run();
p1.sayChinese(); p1.prototype //无法获取????????
p1.run(); //无法调用???
p1.sayChinese(); //可以调用 People.say();//无法调用????????
People.sayChinese();//无法调用???????? People.prototype.say();//无法调用????????
People.prototype.run();//无法调用???????? /*
*eg1
*/
function baseClass()
{
this.showMessage = function () {
alert("baseClass::showMessage()");
}
} function extendClass()
{ } extendClass.prototype = new baseClass();
var extendClassObj = new extendClass();
extendClassObj.showMessage(); //输出"baseClass::showMessage()" /*
*eg2 两个类含有同名方法
*/
function baseClass() {
this.showMessage = function () {
alert("baseClass::showMessage( )");
}
} function extendClass() {
this.showMessage = function () {
alert("extendClass::showMessage( )");
}
} extendClass.prototype = new baseClass();
var extendClassObj = new extendClass();
extendClassObj.showMessage(); //输出"extendClass::showMessage( )" /*
*eg3 让extendClass的实例调用baseClass的同名方法
*/
function baseClass() {
this.showMessage = function () {
alert("baseClass::showMessage( )");
}
} function extendClass() {
this.showMessage = function () {
alert("extendClass::showMessage( )");
}
} extendClass.prototype = new baseClass();
var extendClassObj = new extendClass();
var baseClassObj = new baseClass();
baseClassObj.showMessage.call(extendClassObj);//让【extendClassObj】调用【baseClassObj】的【showMessage】方法
//输出:"baseClass::showMessage( )" /*
*eg4
*/
function baseClass()
{
this.showMessage = function () {
alert("baseClass::showMessage( )");
}
this.baseShowMessage = function () {
alert("baseClass::baseShowMessage");
}
}
baseClass.showMessage = function () {
alert("baseClass::showMessge static");
} function extendClass()
{
this.showMessage = function () {
alert("extendClass::showMessage( )");
}
} extendClass.prototype = new baseClass();
var extendClassObj = new extendClass(); extendClassObj.showMessage();//输出:extendClass::showMessage( )
extendClassObj.baseShowMessage();//输出:baseClass::baseShowMessage baseClass.showMessage.call(extendClassObj);//输出:baseClass::showMessge static var baseClassObj = new baseClass();
baseClassObj.showMessage.call(extendClassObj);//输出:baseClass::showMessage( )

http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html

JS中prototype属性-JS原型模式的更多相关文章

  1. js中Prototype属性解释及常用方法

    1.prototype的定义 javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用. 每一个构造函数都有一个属 ...

  2. JS中prototype,js原型扩展

    作者:轩脉刃(yjf512)出处:(http://www.cnblogs.com/yjf512/)版权声明:本文的版权归作者与博客园共有.欢迎转载阅读,转载时须注明本文的详细链接. 原文 http:/ ...

  3. JS中关于构造函数、原型链、prototype、constructor、instanceof、__proto__属性

    在Javascript不存在类(Class)的概念,javascript中不是基于类的,而是通过构造函数(constructor)和原型链(prototype chains)实现的.但是在ES6中引入 ...

  4. 简单理解js的prototype属性

    在进入正文之前,我得先说说我认识js的prototype这个东西的曲折过程. 百度js的prototype的文章,先看看,W3School关于prototype的介绍: 你觉得这概念适合定义js的pr ...

  5. js中prototype,__proto__,constructor之间的关系

    首先,我们需要了解三点: 1. 只要创建一个任意新函数,就会根据一个prototype属性,该属性指向函数的原型对象: 2. 每一个原型对象都会自动获得一个constructor属性,该属性只想pro ...

  6. 复习一下js的prototype 属性

    <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</t ...

  7. Javascript中prototype属性详解 (存)

    Javascript中prototype属性详解   在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不 ...

  8. (转载)详解Javascript中prototype属性(推荐)

    在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不 ...

  9. 【微信小程序】在js中导入第三方js或自己写的js,使用外部js中的function的两种方法 import和require的区别使用方法 【外加:使用第三方js导出的默认function的调用方法】

    如下 定义了一个外部js文件,其中有一个function import lunaCommon from '../lunaCommon.js'; var ctx = wx.getStorageSync( ...

随机推荐

  1. iOS的属性声明:retain和strong的区别

    声明属性时用strong或者retain效果是一样的(貌似更多开发者更倾向于用strong).不过在声明Block时,使用strong和retain会有截然不同的效果.strong会等于copy,而r ...

  2. 512M内存机器如何用好Mysql

    购买阿里云512M内存ECS后,mysql有时候会自动关闭,停止运行 解决办法: a,优化mysql配置,因为自己安装的是mysql 5.6,而从5.6开始,mysql安装包中不再包含my-small ...

  3. 改变HTML中超链接的显示样式

    更详细的内容请参考:http://www.w3school.com.cn/tags/tag_a.asp HTML中的代码如下: <a class="news_title" t ...

  4. Js与Jq 获取浏览器和对象值的方法

    JS and Jquery 都能获取页面元素的宽度,高度和相对位移等数值,那他们之间能相互转换或替代吗,写法又有哪些差异呢?本文将详细为你介绍. 1.Js获取浏览器高度和宽度document.docu ...

  5. Onthink学习随笔

    -------------------------------------(写代码不孤独_小小代) 用Onthink写了一个网站暂时还没上线功能略显不全没,完全没有发挥出应有的强大拓展之处,各种地方略 ...

  6. iOS学习之详解AppDelegate

    AppDelegate, 类似于监听接口. 用个很简单的例子说:ios系统会控制每个程序的开始和结束.但是ios又不知道每个程序的开始需要运行成么代码,结束需要运行什么代码.这个时候,ios就制定了一 ...

  7. MySQL用户远程登陆

    默认情况下,root用户是不具备远程登录的权限. 1.切换mysql表,查看当前用户信息 select host,user from user where user = 'root' 2.给用户进行授 ...

  8. Java开发工具与程序调试

    开发工具:MyEclipse,Eclipse等. 程序调试:  (1)断点:设置断点是程序调试中必不可少的手段,Java调试器每次遇到程序断点时都会将当前线程挂起,即暂停当前程序的运行.(在Eclip ...

  9. Spring HTTP invoker 入门

    一.简介 Spring开发团队意识到RMI服务和基于HTTP的服务(如,Hessian)之间的空白.一方面,RMI使用JAVA标准的对象序列化机制,很难穿透防火墙.另一方面,Hessian/Burla ...

  10. Hive 10、Hive的UDF、UDAF、UDTF

    Hive自定义函数包括三种UDF.UDAF.UDTF UDF(User-Defined-Function) 一进一出 UDAF(User- Defined Aggregation Funcation) ...