javascript创建类对象

正确样例:

var Person=function(name,age){
      this.Name='';
      this.Age='';
      this.Say=function(msg){
             alert(msg);
      }
      this.init=function(name,age){
             this.Name=name;
             this.Age=age;
      }
      this.init(name,age);

      var fun=function(){
            alert('fun');
      }

      this.funShow=function(){
             fun();
      }
      <pre name="code" class="html">      var mutilFun=function(){
             <pre name="code" class="html">             Say();
<span style="font-family: Arial, Helvetica, sans-serif;">                          this.Say();</span>

}


      this.mutilFunShow=function(){          <pre name="code" class="html">             mutilFun();

}


fun();}调用: var Jon=new Person(‘Jon‘,26); Jon.Say(‘go away‘); alert(Jon.Name+Jon.Age);上面都对 var Shaw=new Person(‘Shaw‘,26);



   Shaw.fun();
<pre name="code" class="html">   Shaw.funShow();//这个是对的。其他Shaw都错。
   Shaw.mutilFunShow();//这里面是能够运行到mutilFun这个涵数,但是<span style="font-family: Arial, Helvetica, sans-serif;">mutilFun这个涵数报错,因为mutilFun中的this.Say()不是Person这个类中的this.Say()。这里的this指                                                   的就是</span><span style="font-family: Arial, Helvetica, sans-serif;">mutilFun,不是Person。</span>

Shaw这个对象是错了

为什么 Shaw.fun()会错,而且报的错误是 Shaw.fun() is not a function。因为fun不是Shaw的属性,如果是属性是不用var ;而用this或没有this.

但是 Shaw.funShow()就是对的。

Person即是类,也是方法,说成带属性的方法更加合适。Person里面也是一步步执行下拉的,先运行this.init(name,age),在运行fun()。

时间: 2024-08-01 09:49:40

javascript创建类对象的相关文章

Javascript创建类和对象

现总结一下Javascript创建类和对象的几种方法: 1.原始的创建方法: 1 <script type="text/javascript"> 2 var person = new Object(); 3 person.name="Amy"; 4 person.sex="Woman"; 5 person.show=function(){ 6 document.write("name is: "+this.name

JavaScript创建类的方式

一些写类工具函数或框架的写类方式本质上都是 构造函数+原型.只有理解这一点才能真正明白如何用JavaScript写出面向对象的代码,或者说组织代码的方式使用面向对象方式.当然用JS也可写出函数式的代码,它是多泛型的. 为了讨论的单一性,暂不考虑类的继承,(私有,受保护)属性或方法.EMCAScript中实际没有类(class)的概念,但可以把它理解为更广义的概念. 1.构造函数方式 /** * Person类:定义一个人,有个属性name,和一个getName方法 * @param {Strin

[菜鸟]C++创建类对象时(无参)后不加括号与加括号的区别

在不考虑用new动态创建对象的情况下,用最普通的 类名 对象名(参数); 的方法创建对象 先贴上最正常最普通的代码 #include<iostream> using namespace std; class C{ public: C(){ cout<<"Hello C++\n"; }; C(int m){ cout<<"I love C++\n"; }; private: int n; }; int main(){ C c; re

C#加载dll 创建类对象

//加载dll 创建类对象string sqlightAssembly = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "system.data.sqlite.dll"); Assembly lib = Assembly.LoadFrom(sqlightAssembly); foreach (Type t in lib.GetExportedTypes()) { if(t.FullName == "System.Da

JavaScript创建Map对象(转)

JavaScript 里面本身没有map对象,用JavaScript的Array来实现Map的数据结构. Js代码   /* * MAP对象,实现MAP功能 * * 接口: * size()     获取MAP元素个数 * isEmpty()    判断MAP是否为空 * clear()     删除MAP所有元素 * put(key, value)   向MAP中增加元素(key, value) * remove(key)    删除指定KEY的元素,成功返回True,失败返回False * 

设计模式之工厂模式:模拟DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC动态创建类对象

该形式的工厂模式是我项目中用到的方法,属于很成熟的模版,读者可以直接拿来在自己项目中使用.个人感觉这种方法真正做到了"开放封闭"的原则,最大好处是用户产品类的设计完全不依赖于该模式的实现,比如提供必须的相关函数等.如果不理解工厂模式的话,请参考网上其它文章,本实现在理解上有一点小小的难度.好东西,大家慢慢享用,话不多说,先放代码! 首先是产品基类,它相当于一个接口,产品需要有什么动作就写在这里吧! #ifndef _CPRODUCTBASE_H_ #define _CPRODUCTBA

通过字符串动态创建类对象

功能的需求是  不需要使用IOC 框架 来对创建指定对象. .NET 中  要想动态的 创建对象   做耦合  好像只能做到 将类生成DLL 后  然后 加载DLL 接着创建对象. JAVA 当个类文件 就可以运行. 希望做到  当读一个   .class  或者 .TXT 就可以  动态创建类对象  那多好啊!!! 还可以将 类文件 以字符串的形式写到 数据库中  通过数据库来 创建类对象. 然后就各种百度 谷歌 贴吧等  找有没相关的 解决方案    还好  找到了  . 不藏着 分享出来

Javascript创建空对象和空数组的几个方法和差别

以下是三种创建空对象的方法: var emptyObj1 = {}; var emptyObj2 = new Object(); var emptyObj2 = Object.create(Object.prototype); 他们对Javascript来说是一样的,新创建的三个对象会继承object所有的属性和方法,所以emptyObj1.toString等于Object.prototype.toString.但是要注意,{}.toString是会报错的! 类似的还有空数组问题: var em

创建类对象并获取类的完整结构

创建类的对象:条用Class对象的newInstance方法 1.类必须有一个无参构造器 2.类的构造器的访问权限需要足够. 没有无参构造器也能创建: 1.通过Class类的getDeclaredConstructor取得本类的指定形参类型的构造器 2.向构造器的形参中传递一个对象数组进去,里面包含了构造器中所需要的各个参数 3.在Constructor类中存在一个方法public newInstance 运行时类调用的空参构造器