js属性和方法的可见性:私有属性(方法),实例属性(方法),类属性(方法)

    /*
私有属性 : 在对象的定义中定义的非全局变量
实例属性 : 使用this为对象附加实例属性/对象名称.属性名
类属性   : "类"名.属性名/类名.prototype.属性名
    */
    //私有属性 : 在对象的定义中定义的非全局变量
    function Person(firstName,lastName){
        var name=firstName+" "+lastName;
        this.getFullName =function(){
            return name;
        }
    }
    var person=new Person("Si" ,"Li");
    alert(person.getFullName());
    alert(person.name); //undefined

    //实例属性

    function Person(name,sex,num){
        this.name=name;
        this["sex"]=sex;
        this[50]=num;
    }
    var person1=new Person("lisi","男",11);
    person1.age=22;
    alert(person1.name);//lisi
    alert(person1["sex"]);//男
    alert(person1[50]);//11
    alert(person1.age);//22

    var person2=new Person("zhangsan","女",15);
    alert(person2.name);//zhangsan
    alert(person2["sex"]);//女
    alert(person2[50]);//15
    alert(person2.age);//undefined
    //类属性
    function Person (){};
    Person.name="lisi";//这种方式定义的属性,类的实例不能访问;只能通过 类名.属性名访问
    alert(Person.name)

    var person3=new Person("lisi");
    var person4=new Person('zhangsan');
    alert(person3.name);//undefined
    alert(person4.name);//undefined
    
    function Person (){};
    Person.prototype.name="lisi";//这种方式定义的属性,只能通过类的实例访问.不同实例之间共享该属性;不能通过 类名.属性名的方式访问
    alert(Person.name);//undefined
    var person5=new Person();
    var person6=new Person();
    alert(person5.name);//lisi
    alert(person6.name);//lisi
/------------------------   方法(和属性一致)   ------------------------/
    //私有方法
    function Person(){
        function sayHi(){
            alert('Hi');
        }
        this.sayHello=sayHi;
    }
    var person1=new Person();
    person1.sayHello();//Hi
    person1.sayHi();//对象不支持此属性或方法
    //实例方法
    function Person(name,sex,num){
        this.sayHello=function(){alert("Hello "+name);};
        this["sex"]=function(){alert(sex)};
        this[50]=function(){alert(num)};
    }
    var person2=new Person("lisi","nan",40);
    person2.sayHello();//lisi
    person2["sex"]();//nan
    person2[50]();//40
    var person3=new Person("zhangsan","nv",22);
    person3.sayHello();//zhangsan
    person3["sex"]();//nv
    person3[50]();//22
    //类方法
    function Person(){};
    Person.sayHi=function(){alert("hi")};//这种方式定义的属性,类的实例不能访问;只能通过 类名.方法名访问
    var person4=new Person();
    Person.sayHi();//hi
    person4.sayHi();//对象不支持此属性或方法

    function Person (){};
    Person.prototype.sayHi=function(){alert("hi")};//这种方式定义的属性,只能通过类的实例访问.不同实例之间共享该属性;不能通过 类名.属性名的方式访问
    var person5=new Person();
    var person6=new Person();
    person5.sayHi();//hi
    person6.sayHi();//hi
    Person.sayHi();//对象不支持此属性或方法




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值