javaScript【创建对象、创建类、成员变量、方法、公有和私有、静态】
2018-01-21 00:00
716 查看
创建对象
方式①
直接使用new Object()var obj = new Object();
方式②
使用空的{}大括号var obj2 = {};
测试
增加属性,访问属性
我们要为创建的对象增加属性和访问属性的值!使用.操作符增加属性
JavaScript是弱类型的语言,可以动态的添加属性。obj.age = 20; obj.name = "zhongfucheng"; obj.say = function () { alert("hello"); };
测试
使用.操作符访问属性
var aa = obj.age; var bb = obj.name;
测试
使用[]操作符访问属性
var aa = [obj["age"]]; var bb = [obj["name"]];
测试
创建类
方式①
使用function来模拟创建类,function充当了构造函数//测试函数 function test() { var teacher = new Teacher(); } //使用function来模拟类 function Teacher() { }
测试
方式②
上面的function来模拟类很容易和函数混淆。我们一般这样做:用一个变量记住一个匿名的function当做是类,function充当了构造函数
function test() { var teacher = new Teacher(); } var Teacher = function () { };
测试
方式③
使用JSON语法来创建类,也就是对象直接量定义方法var obj = { age: 20, str: "zhongfucheng", method:function () { alert("aaa"); } };
测试
公有属性和方法
我们创建公有属性应该在类中指定,创建公有方法应该使用原型对象prototypeprototype定义的属性就类似于Java的静态成员:在原型对象上定义了属性,拥有这个原型对象的function所创建的对象也拥有定义的属性!所以,我们方法中就使用prototype
var obj = function Teacher(name) { this.name = name; if( typeof obj._init=="undefined") { obj.prototype.setName = function (name) { this.name = name; }; obj.prototype.getName = function () { alert(this.name); }; } obj._init = true; };
创建两个不同的Teacher对象,name属性是不一样的。而它们共享同一份setName()和getName()方法
值得注意的是:prototype定义的属性只可读的。如果你想要使用具体对象写prototype的属性,实际上并不是写,而是重新为该类定义了一个同名(和prototype同名)的属性。在读取同名属性的时候,优先读取对象上的属性,而不是prototype的。
私有属性
我们在Java中,定义私有属性是通过关键字private来修饰的。。在JavaScript中是没有这样的关键字的,我们需要这样做:定义在方法内【也就是function内部,也可以看作成构造函数】的变量,就是私有变量。
var obj = function Teacher(name) { //这是私有属性,外界不能访问 var age = 23; //这是公有属性,外界可以访问 this.name = name; //想要访问私有变量age,只能在这里编写方法来访问。其余的地方都不行! //我们通常就是在这里编写公有方法来访问私有属性 };
静态属性和方法
在JavaScript中定义静态属性其实就是通过prototype原型对象来定义的。定义静态的时机:
当类的某个值与对象无关期望所有位置看到的结果是一样的时候,就可以定义为类静态属性。
如果类的一个方法做的是和具体对象无关的操作,而是做一些工作操作的时候,就可以将这个方法定义为静态的类方法。
//静态属性TYPE Book.TYPE = “IT”; Book.print = function(){alert(Book.TYPE);}
相关文章推荐
- javaScript【创建对象、创建类、成员变量、方法、公有和私有、静态】
- javaScript【创建对象、创建类、成员变量、方法、公有和私有、静态】
- Javascript 构造函数,公有,私有特权和静态成员定义方法
- javascript 原型方法,对象方法,类方法;私有属性,公有属性,公有静态属性
- JavaScript 对象方法 类方法 原型方法的区别;私有属性 公有属性 公有静态属性的区别
- JavaScript 对象方法 类方法 原型方法的区别;私有属性 公有属性 公有静态属性的区别
- javascript封装类的技巧:具有私有成员、私有方法、特权属性、特权方法、原型对象、静态成员,最重要的是不会失去封装的优点,并且不影响继承
- JavaScript中的公有、私有、特权和静态成员用法分析
- 从声明方式看Javascript的4种方法的区别-公有方法、私有方法、特权方法和静态方法
- js 对象方法、类方法、原型方法的区别;私有属性、公有属性、公有静态属性
- JavaScript面向对象-静态方法-私有方法-公有方法-特权方法
- 访问C++类对象中私有成员变量的方法
- php 给对象私有及受保护的成员变量赋值的几种方法
- 访问C++类对象中私有成员变量的方法
- 反射(四)使用反射机制调用对象的私有方法及成员变量
- 通过操作地址的方法来访问C++类对象中私有成员变量
- 定义一个包含私有成员变量和函数的类,再定义一个内部类,在内部类函数中访问外部成员变量,并调用外部函数。在外部类函数中创建内部类对象,调用内部类函数
- 反射机制的概述和字节码对象的获取,通过反射获取构造方法并使用;通过反射获取成员变量并使用;通过反射获取私有成员变量并使用;通过反射获取成员方法并使用
- 关于访问C++类对象中私有成员变量的方法,不考虑用友元