• JavaScript实现类,有多种方法。




    方法一:构造方法。
    1. function coder(){
    2. this.name = '小王';
    3. this.job = '程序员';
    4. this.coding = function ()
    5. {
    6. alert('我正在写代码');
    7. }
    8. }

    9. var coder=new coder();
    10. alert(coder.name);
    11. coder.coding();
    复制代码
    方法二:工厂方法。
    1. function createCoderFactory(){
    2. var obj=new Object();
    3. obj.name = '小王';
    4. obj.job = '程序员';
    5. obj.coding = function (){
    6. alert('我正在写代码');
    7. };
    8. return obj;
    9. }
    10. var coder = createCoderFactory();
    11. alert(coder.name);
    12. coder.coding();
    复制代码
    但工厂方法和构造方法都有着一个相同的缺点,就是每创建一个实例,都会实例化该类的每个函数。

    方法三:原形链。
    1. function coder(){}
    2. coder.prototype.name = '小王';
    3. coder.prototype.job = '程序员';
    4. coder.prototype.coding = function(){
    5. alert('我正在写代码');
    6. };
    7. var coder = new coder();
    8. alert(coder.name);
    9. coder.coding();
    复制代码
    但原行链有个缺点就是它所有属性都共享,只要一个实例改变其他的都会跟着改变。如:
    1. var coder1 = new coder();
    2. var coder2 = new coder();
    3. alert(coder1.name); /*显示“小王”*/
    4. coder2.name = '老王';
    5. alert(coder1.name); /*示“老王”*/
    6. alert(coder2.name); /*这个也显示“老王”*/
    复制代码
    方法四:混合方式。

    以上三种都有着各自的缺点,所以我们要加以改进。
    1. function coder(){
    2. this.name = '小王';
    3. this.job = '程序员';
    4. }
    5. coder.prototype.coding = function(){
    6. alert('我正在写代码');
    7. };
    复制代码
    方法五:动态原链。

    要解决前三种的缺点,还有一种方法。
    1. function coder(){
    2. this.name = '小王';
    3. this.job = '程序员';
    4. if (typeof(coder._init) == 'undefined'){
    5. this.coding = function ()
    6. {
    7. alert('我正在写代码');
    8. };
    9. this._init = true;
    10. }
    11. }
  • 相关阅读:
    第一次编程作业
    第一次博客作业
    软工回顾与总结
    百度OCR技术博客
    BUAA2020软工个人博客作业2-软件
    2020软工结队项目作业
    2020软工个人项目作业
    2020软件工程第一次个人博客作业
    2020软件工程热身作业
    OO完结篇-第四单元小结
  • 原文地址:https://www.cnblogs.com/zengwei/p/1700557.html
Copyright © 2020-2023  润新知