aardio类


aardio中类创建了一个新的名字空间,这一点和Python有很大的不同

先看看Python的

# -*- coding: utf-8 -*-
__author__ = 'duohappy'

class Test(object):
    def __init__(self, para):
        a = para
        // self.a = para  // 才可以
        
t = Test(10)

print(Test.a)  # error

'''
a 仅仅就是__init__函数内部的一个变量,和实例、类均没有发生关系
'''

aardio的表现就不一样了

import console;

class clsTab {
    ctor(para){
        c = para;  // 类的构造函数
    }
    
    print = function(){
        ..console.log(this.c);  // this指代当前实例
        // this.c为null,说明当前实例没有c这个属性
        ..console.log(self.c); // self指代当前名字空间,类有自己的名字空间,名称是类名
        // self.c为30,说明构造函数,添加了一个名字空间的成员变量
    }   
    
}

tab = clsTab(30)  // 创建了一个类的实例

tab.print()  // 输出的结果,可以说明和Python的不同

console.pause(true);

aardio的构造函数赋值,应该采用this或者self关键词,这样代码更加有逻辑性

import console;

class clsTab {
    ctor(para){
        this.c = para;  // this指代当前实例,这一点和Python中的__init__函数中总是用self.a = para,用self的道理一样
        self.d = para - 10;  // 构造了一个成员变量,类的实例不可以访问
        // 这一点特别注意,名字空间的变量,实例不是一定可以访问
    }
    
    print = function(){
        ..console.log(this.c);
        ..console.log(self.d);
    }   
    
}

tab = clsTab(30)
console.print(tab.d)  // 返回null,证明实例没有访问到名字空间的成员变量

tab.print()

console.pause(true);

但是aardio可以有类属性,这一点和Python有点像

import console;

class clsTab {
    
    e = 1000;  // 创建实例的时候,都有了这个变量
    
    print = function(){
        ..console.log(this.e);  // 实例可以访问这个变量
        ..console.log(self.e);  // 名字空间没有这个变量
    }   
    
}

tab = clsTab()

tab.print()
console.log(tab.e)
console.log(clsTab.e)  // 没有这个变量

console.pause(true);

建议在类和名字空间的使用中,尽量用this self 等指明容易混淆的地方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值