javascript面向对象编程:js类定义函数时用不用prototype的区别

一直在使用js编写自以为是面向对象的方法,遇到一个问题,就是定义一个方法,如下:

         function ListCommon2(first,second,third)
{
  this.First=function ()
{
 alert("first do"+first);
}
 }
 ListCommon2.do1=function(first)
{
    //   this.First();
  alert("first do"+first);
 }
ListCommon2.prototype.do2=function(first)
{
     // this.First();
   alert("first do"+first);
 }

两种方法到底有什么区别呢?用不用prototype有什么作用呢?

测试代码:

var t1=new ListCommon2("烧水1","泡茶1","喝1");
            // t1.do1();//调用出错
             ListCommon2.do1("烧水1");
             var t2=new ListCommon2("烧水2","泡茶2","喝2");
             t2.do2("烧水2");//
             // ListCommon2.do2("烧水1");//调用出错

经过测试发现,没有使用prototype的方法相当于类的静态方法,因此可以这样调用,ListCommon2.do1("烧水1");,如果这样调用就会出错,t1.do1();

相反,使用prototype的方法相当于类的实例方法,只有new后才能使用,ListCommon2.do2("烧水1");这样就会出错

结论,使用  prototype定义的方法相当于类的实例方法,必须new后才能使用,函数中可以调用函数的限制也会类的实例方法的限制有些类似

使用  不使用prototype定义的方法相当于类的静态方法,可以直接使用,不需要new,,函数中可以调用函数的限制也会类的静态方法法的限制有些类似

例如不能调用this.First();

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/script/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索函数
, 方法
, function
, prototype
, do
, first
, 限制调用
, js出错
, JS定义类
js类静态方法
,以便于您获取更多的相关知识。

时间: 2025-01-23 14:00:16

javascript面向对象编程:js类定义函数时用不用prototype的区别的相关文章

javascript面向对象编程:js类定义函数时prototype和this的区别

在面向对象编写js脚本时,定义实例方法主要有两种 如下: function ListCommon2(afirst) { var first=afirst; this.do1=function () { alert("first do"+first); } } ListCommon2.prototype.do2=function() { // alert("first do"+first);//会出错,不能访问first this.do1(); } this.do1=

js类定义函数时用prototype与不用的区别示例介绍_javascript技巧

一直在使用js编写自以为是面向对象的方法,遇到一个问题,就是定义一个方法,如下: 复制代码 代码如下: function ListCommon2(first,second,third) { this.First=function () { alert("first do"+first); } } ListCommon2.do1=function(first) { // this.First(); alert("first do"+first); } ListComm

javascript 面向对象编程 function是方法(函数)_js面向对象

好程序不是写给computer的,而是写给human的.遇到复杂功能,应该想着把它简化.组件化,把小功能封装成小组件,小功能块可以任意的组合得到千变万化的复杂功能.function就可以帮助我们把功能进行封装.那什么是封装呢.要我说,只要把具体实现给打包,对外提供调用接口那就是封装,方法也好.类也好就做了这些事.       javascript中的function可以用来创建方法.也可以用来创建类,实际上我们可以认为是用function来模拟出的类(说到类一般都会要去了解闭包的知识).还是先看

javascript面向对象编程:如何定义属性字段

都知道js变量有作用域的概念,因此可以使用这个特性定义私有字段,私有字段的初始化主要是通过构造函数. 例如如下定义了一个只读字段first function ListCommon2(afirst) { var first=afirst; this.GetFirst=function ()//定义了一个访问读取字段的特权方法 { return first; } } ListCommon2.prototype.do2=function() { var field= this.GetFirst();/

JS中定义函数时的参数定义为undefined

问题描述 看到大牛们写的js源码,想拜读学习一下.var KISSY = (function (undefined) { var host = this, S, guid = 0, EMPTY = ''; S = { __BUILD_TIME: '20130701201313', ... }; // exports for nodejs if (S.Env.nodejs) { S.KISSY = S; module.exports = S; } return S;})();请看以上的代码,为什么

JavaScript 面向对象编程(2) 定义类_js面向对象

本文承接上一篇JavaScript面向对象编程(1) 基础. 上篇说过,JavaScript没有类的概念,需要通过函数来实现类的定义.先通过一个例子说明: 复制代码 代码如下: function myClass() { var id = 1; var name = "johnson"; //properties this.ID = id; this.Name = name; //method this.showMessage = function() { alert("ID:

JS类定义原型方法的两种实现的区别评论很多_js面向对象

我们知道,给JavaScript类添加原形(prototype)方法是很简单的.而且常用的有下面这两种方法,可是这两种方法在使用时有区别吗?     JScript Class:  复制代码 代码如下:  function JSClass()   {        }      Extends prototype method:  复制代码 代码如下:  JSClass.prototype.MethodA = function()   {   };      Or   复制代码 代码如下: fu

js面向对象 编程: JavaScript 面向对象编程,严格过程的标准化编程法,目前为止最好的 JS 生成对象代码结构

市面上流行了很多 JavaScript 面向对象的编程方法,其中不少都有好些问题.这里总结最正确的 JavaScript 面向对象编程模式.对于类 Special 继承自类 Common 继承自类 Super 的情况,一个 Special 对象的创建,详细说来,应该经历以下步骤.1 确定继承关系1.1 读取 Special 的父类,发现是 Common1.2 读取 Common 的父类,发现是 Super1.3 读取 Super 的父类,发现没有了(隐形父类 Object)2 加载类结构(如果没

Javascript 面向对象编程

Javascript 面向对象编程 2012年1月9日陈皓 发表评论阅读评论 49,161 人阅读     Javascript是一个类C的语言,他的面向对象的东西相对于C++/Java比较奇怪,但是其的确相当的强大,在 Todd 同学的"对象的消息模型"一文中我们已经可以看到一些端倪了.这两天有个前同事总在问我Javascript面向对象的东西,所以,索性写篇文章让他看去吧,这里这篇文章主要想从一个整体的角度来说明一下Javascript的面向对象的编程.(成文比较仓促,应该有不准确