Javascript的私有变量和方法、共有变量和方法以及特权方法、构造器、静态共有属性和静态共有方法
2016-09-24 22:48
609 查看
一、私有变量:定义在函数内部的属性和方法称之为该函数的私有属性和方法 共有变量:在函数内部通过this创建的对象和方法称之为该函数的共有属性和方法
特权方法:通过this创建的既可以访问该函数的共有属性和方法,也可以访问该函数的私有属性和方法称之为特权方法
构造器:对象在创建的时候调用特权方法来初始化实例的属性,这个方法也称为构造器
[/code]调用测试方法:
所有输出的结果为:setBookName特权方法 和 getName特权方法,可以调用类的私有属性和方法:num=1
[/code]继续调用测试方法
[/code]修改BookDemo来跟踪bookname的变化
[/code]测试
[/code]二、类的静态共有方法和静态共有属性
[/code]测试
[/code]
来自为知笔记(Wiz)
特权方法:通过this创建的既可以访问该函数的共有属性和方法,也可以访问该函数的私有属性和方法称之为特权方法
构造器:对象在创建的时候调用特权方法来初始化实例的属性,这个方法也称为构造器
/**
* 类的内部私有属性、私有方法、特权方法、共有属性和共有方法以及构造器
* @param id
* @param bookname
* @param price
* @constructor
*/
var BookDemo = function(id,bookname,price){
/*
*申明在函数内部的属性和方法是该函数对象的私有属性和私有方法
*/
var num = 1;// 私有属性
//私有方法
function checkId(id){
return id;
}
/**
* 通过this创建的属性和方法是共有属性和方法 也称为特权方法
*/
this.bookname = bookname;
this.getBookName = function(){
console.info('getName特权方法,可以调用类的私有属性和方法:num='+num);
}
this.setBookName = function(bookname){
console.info('setBookName特权方法');
}
this.copy = function(){
console.info('copy的共有方法')
}
/**
* 在对象创建时候调用这些共有方法初始化实例对象的属性,那么这些共有方法又称为构造器,
* 在对象被new出来的时候就会被执行 构造器必须有对应的特权方法的实现,否则就会报错
*this.setBookName is not a function
*/
this.setBookName(bookname); //如果包含方法则该方法会在初始化的时候就会被创建
this.getBookName();
}
[/code]调用测试方法:
var bookDemo = new BookDemo('1','Javascript设计模式','48.5');//由于调用了 this.setBookName 和this.getBookName 属性通过new创建实例的时候就会执行 this.getBookName和 this.setBookName 的特权方法
所有输出的结果为:setBookName特权方法 和 getName特权方法,可以调用类的私有属性和方法:num=1
[/code]继续调用测试方法
console.info(bookDemo.num); //undefined
[/code]修改BookDemo来跟踪bookname的变化
/**
* 类的内部私有属性、私有方法、特权方法、共有属性和共有方法以及构造器
* @param id
* @param bookname
* @param price
* @constructor
*/
var BookDemo = function(id,bookname,price){
/*
*申明在函数内部的属性和方法是该函数对象的私有属性和私有方法
*/
var num = 1;// 私有属性
//私有方法
function checkId(id){
return id;
}
/**
*通过this创建的属性和方法是共有属性和方法
*/
this.bookname = bookname;
this.getBookName = function(){
console.info('getName特权方法,可以调用类的私有属性和方法:num='+num+",bookname="+bookname);
}
this.setBookName = function(bookname){
console.info('setBookName特权方法,bookname='+bookname);
}
this.copy = function(){
console.info('copy的共有方法')
}
/**
* 在对象创建时候调用这些共有方法初始化实例对象的属性,那么这些共有方法又称为构造器,
*在对象被new出来的时候就会被执行
*/
this.setBookName(bookname);
this.getBookName();
}
[/code]测试
var bookDemo = new BookDemo('1','Javascript设计模式','48.5');
bookDemo.setBookName('Java设计模式');
/**
*输出依次为:setBookName特权方法,bookname=Javascript设计模式
* getName特权方法,可以调用类的私有属性和方法:num=1,bookname=Javascript设计模式
* setBookName特权方法,bookname=Java设计模式
*/
[/code]二、类的静态共有方法和静态共有属性
/***
* 通过new创建对象是,由于类外面通过点语法创建的属性和方法没有执行到,所以新创建的对象无法获取到他们
* 但是可以通过类来获取,所以称之为类静态共有属性和方法
* @type {boolean}
*/
BookDemo.isChinese = true; //类静态共有属性
//类静态共有方法
BookDemo.checkBookName = function(){
console.info('通过点方法创建的类静态共有方法,只能改类自己直接方法,不能通过new创建对象来访问');
}
/**
* 通过prototype创建的属性和方法可以通过this来访问,所以通过prototype创建的属性和方法称之为共有属性和方法
* @type {{isJsBook: boolean, display: BookDemo.display}}
*/
BookDemo.prototype = {
isJsBook : true,
display : function(){
console.info('外部通过prototype创建的方法可以访问该函数内部的属性,bookname='+this.bookname);
}
}
[/code]测试
console.info(bookDemo.isChinese); //undefined
BookDemo.checkBookName(); //通过点方法创建的类静态共有方法,只能改类自己直接方法,不能通过new创建对象来访问
bookDemo.display();//外部通过prototype创建的方法可以访问该函数内部的属性,bookname=undefined
[/code]
来自为知笔记(Wiz)
相关文章推荐
- Javascript 面向对象(共有方法,私有方法,特权方法,静态属性和方法,静态类)示例讲解
- js面向对象之公有、私有 、静态方法和属性,以及特权方法
- javascript封装类的技巧:具有私有成员、私有方法、特权属性、特权方法、原型对象、静态成员,最重要的是不会失去封装的优点,并且不影响继承
- javaScript 中的私有,共有,特权属性和方法
- javaScript 中的私有,共有,特权属性和方法
- javaScript【创建对象、创建类、成员变量、方法、公有和私有、静态】
- 【JS】JavaScript中的私有变量与特权方法
- JavaScript公有、私有以及受保护的属性和方法
- javascript 中公共/私有变量、方法、特权
- javascript 原型方法,对象方法,类方法;私有属性,公有属性,公有静态属性
- JavaScript 对象方法 类方法 原型方法的区别;私有属性 公有属性 公有静态属性的区别
- Javascript 面向对象(一)(共有方法,私有方法,特权方法)
- javaScript【创建对象、创建类、成员变量、方法、公有和私有、静态】
- javascript中的私有,公有,特权和静态方法
- javascript类学习(二)——类的私有变量、私有方法、共有变量、共有方法
- JavaScript面向对象-静态方法-私有方法-公有方法-特权方法
- Javascript--面向对象(一)(共有方法,私有方法,特权方法)
- javascript的字段值,私有变量,静态方法声明
- Javascript中类的构造函数以及原型构造法,以及定义共有变量和私有变量
- Javascript 构造函数,公有,私有特权和静态成员定义方法