实例化的两种方法(new和函数法)

// 定义类 类名字是 classA 
function classA(){  
    this.b=1; 

classA.prototype.b=44; 
classA.prototype.show = function(){ 
    alert(this.b); 
}; 
// 用new实例化 
var b = new classA(); 
b.show();  //11没有this.b=1的话输出为44(现在构造函数里面找没找到再到原型上面找)
// 用函数实例化 
function newClass(cls,args){ 
    var obj = {}; 
    for(var p in cls.prototype) 
        obj[p] = cls.prototype[p]; 
    obj.__proto__ = cls.prototype; 
    cls.apply(obj,args||[]); 
    return obj; 
}; 
var k = newClass(classA); 
k.show();

时间: 2024-10-09 07:41:47

实例化的两种方法(new和函数法)的相关文章

C++类的实例化的两种方法

C++ 类的实例化有两种方法: 直接定义对象: 先定义一个类: class A { public: A(); virtual ~A(); ... ... }; 类实现略. 用的时候: A a; a. 成员函数: a. 成员变量: a 就是一个对象. 定义一个类指针的方法: A *p = new A; p->成员函数: p->成员变量: 最后别忘了销毁对象:delete[] a;  A由系统创建并释放,你不要担心会出现内存泄露,但是生命期只有在本区域的大括号内,出了大括号就没用了.p是指针,要自

JavaScript两种方法来定义一个函数

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> /*I总结: 1.函数名能够做变量使用.能够赋值.能够传值 2.函数名当參数.传递给还有一个函数 */ //==================js中

JS访问对象属性的两种方法

var person = { name: "nick" }; console.log(person["name"]); // "nick"; console.log(person.name); // "nick"; 两种方法优缺点:方括号法可以通过变量访问对象的属性,而点表示法不可以: 方括号法必须加双引号,可以是任何字符串: 原文地址:https://www.cnblogs.com/cloudbarrychen/p/1131

php7实例化类有对象有两种方法

php7实例化类有对象有两种方法,下面给介绍具体两种方法 class Person{public $a="96net.com.cn";public function eat(){echo 'xxxx';} } 1,NEW 关键词实例化对象 $xm= new Person();或者$xm= new Person; 2, 类名字符串,把类名赋值给变量 $strs='Person'; $xm= new $strs(); 原文地址:https://blog.51cto.com/13959155

javascript继承—prototype最优两种继承(空函数和循环拷贝)(3) - jssl915

一.利用空函数实现继承 参考了文章javascript继承-prototype属性介绍(2) 中叶小钗的评论指点,对这篇文章中的方案二利用一个空函数进行修改,可以解决创建子类对象时,父类实例化的过程中特权属性和特权方法,私有属性,私有方法的空耗资源问题. function Person(name,age){ this.name = name; this.age = age; } Person.prototype = { constructor:Person, sayHi:function(){

Js类的静态方法与实例方法区分以及jQuery如何拓展两种方法

上学时C#老师讲到对象有两类方法,静态方法(Static)和实例方法(非Static),当时不理解静态是为何意,只是强记. 后来从事了前端的工作,一直在对类(即对象,Js中严格来说没有类的定义,虽众所周知,这里还是赘述一番,以免产生歧义)的操作上,严重缺乏整体概念,最近看extetnd中再次提到拓展静态方法与实例方法,故而再次百度,才幡然领悟,其实一直有用,只是不知其专业术语呀,哈哈~ 静态方法,属于类的方法,即类可以直接调用的方法.为类所有实例化对象所共用(但不能用实例对象之间调用),所以静态

[设计模式]两种方法实现简单工厂模式

<!--完整代码下载链接:点击下载完整代码示例--> 1.描述 在项目开发中经常会遇到根据不同的条件创建不同的对象,然后对该对象进行操作,一般都包括许多的switch -case分支如下: CBase* pBase(NULL); switch (type_variable) { case obj1: pBase = new CBaseDerivate1();break; case obj2: pBase = new CBaseDerivate2();break; ... case objN:

Android第五期 - 更新自己的apk本地与网络两种方法

首先是本地: ParseXmlService部分: package com.szy.update; import java.io.InputStream; import java.util.HashMap; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element

【转载】C++创建对象的两种方法

原文:http://blog.sina.com.cn/s/blog_586b6c050100dhjg.html 在C++里,有两种方法创建对象: 方法一: ClassName object(param); 这样就声明了一个ClassName类型的object对象,C++会为它分配足够的存放对象所有成员的存储空间. 注意:为节省存储空间,C++创建对象时仅分配用于保存数据成员的空间,而类中定义的成员函数则被分配到存储空间中的一个公用区域,由该类的所有对象共享. 例如,我定义了一个这样的类: cla