JS中prototype属性-JS原型模式
/*
*对象方法
*类方法
* 原型方法
*/
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原型模式的更多相关文章
- js中Prototype属性解释及常用方法
1.prototype的定义 javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用. 每一个构造函数都有一个属 ...
- JS中prototype,js原型扩展
作者:轩脉刃(yjf512)出处:(http://www.cnblogs.com/yjf512/)版权声明:本文的版权归作者与博客园共有.欢迎转载阅读,转载时须注明本文的详细链接. 原文 http:/ ...
- JS中关于构造函数、原型链、prototype、constructor、instanceof、__proto__属性
在Javascript不存在类(Class)的概念,javascript中不是基于类的,而是通过构造函数(constructor)和原型链(prototype chains)实现的.但是在ES6中引入 ...
- 简单理解js的prototype属性
在进入正文之前,我得先说说我认识js的prototype这个东西的曲折过程. 百度js的prototype的文章,先看看,W3School关于prototype的介绍: 你觉得这概念适合定义js的pr ...
- js中prototype,__proto__,constructor之间的关系
首先,我们需要了解三点: 1. 只要创建一个任意新函数,就会根据一个prototype属性,该属性指向函数的原型对象: 2. 每一个原型对象都会自动获得一个constructor属性,该属性只想pro ...
- 复习一下js的prototype 属性
<html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</t ...
- Javascript中prototype属性详解 (存)
Javascript中prototype属性详解 在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不 ...
- (转载)详解Javascript中prototype属性(推荐)
在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不 ...
- 【微信小程序】在js中导入第三方js或自己写的js,使用外部js中的function的两种方法 import和require的区别使用方法 【外加:使用第三方js导出的默认function的调用方法】
如下 定义了一个外部js文件,其中有一个function import lunaCommon from '../lunaCommon.js'; var ctx = wx.getStorageSync( ...
随机推荐
- Android与JS混编(js调用android相机)
参考android相机调用,http://blog.csdn.net/yanzi1225627/article/details/33028041/,谢谢 相机怎么调用就不做赘述了,下面是js调用 ...
- .net简单页面后台绑定下拉框,按钮,分页 前台aspx页面
一.aspx页面 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Updat ...
- silverlight visifire控件图表制作——silverlight 后台方法画图
1.调用wcf 获取信息 private void svc_GetSingleChartDataCompleted(object sender, GetSingleChartDataCompleted ...
- CSSOM视图模式
相关技术文章: CSSOM视图模式(CSSOM View Module)相关整理 W3C CSSOM View Module
- android之ListView,详细介绍实现步骤,举例,自定义listview适配器
android之ListView,详细介绍实现步骤,举例,自定义listview适配器 本文来源于www.ifyao.com禁止转载!www.ifyao.com android中如何使用listVie ...
- 换行word-wrap与word-break兼容IE和FIREFOX -----设计师零张
word-wrap是控制换行的.使用break-word时,是将强制换行.中文没有任何问题,英文语句也没问题.但是对于长串的英文,就不起作用.word-break是控制是否断词的.normal是默认情 ...
- Linux - create usergroup, user and Assigning permissions
第一步:登录已有的Linux系统,使用root账户,登录好以后,如下图: 这样,就登录到Linux系统中,而且是用root用户登录的 注意:如果,你想要创建用户和用户组,那么你当前登录的用户必须有ro ...
- 【经验】在CSS中定义a:link、a:visited、a:hover、a:active顺序
摘自:http://www.qianyunlai.com/post-2.html 以前用CSS一直没有遇到过这个问题,在最近给一个本科同学做的项目里面.出现一些问题,搜索引擎查了一些网站和资料 ...
- 在C中嵌入汇编
早前公布了C和汇编混编的温度控制器程序,收到一些朋友的询问,他们无法在自己程序中使用我的18B20的汇编子程序或无法正常通过混编后的程序编译. 其实在KEIL中嵌入汇编的方法很简单.如图一,在C文件中 ...
- 《Programming WPF》翻译 第8章 1.动画基础
原文:<Programming WPF>翻译 第8章 1.动画基础 动画包括在一段时间内改变用户界面的某些可见的特征,如它的大小.位置或颜色.你可以做到这一点,非常困难的通过创建一个tim ...