类的定义

方式一

var Book = function(id, name, price){
//私有属性,外部不能直接访问
var num = 1;
//私有方法,
function checkId(){};
this.getName = function(){};
this.getPrice = function(){};
this.setName = function(){};
this.setPrice = function(){}; this.id = id;
this.copy = function(){};
this.setName(name);
this.setPrice(price);
} Book.isChinese = true;
Book.resetTime = function(){
console.log('new time');
} Book.prototype= {
isJSBook : false,
display : function(){}
} var b = new Book(11, 'JavaScript 设计模式', 50);
console.log(b.num);
console.log(b.isJSBook);
console.log(b.id);
console.log(b.isChinese);

方式二

var Book = (function(){

    var bookNum = 0;

    function checkBook(name){

    }

    //返回构造函数
return function(newId,newName,newPrice){
//私有变量
var name,price;
//私有方法
function checkID(id){}
//特权方法
this.getName = function(){};
this.getPrice = function(){};
this.setName = function(){};
this.setPrice = function(){}; //共有属性
this.id = newId;
//公有方法
this.copy = function(){};
bookNum++;
if(bookNum>100){
throw new Error('我们仅出版100本书');
}
this.setName(name);
this.setPrice(price);
}
})(); Book.prototype = {
//静态公有属性
isJSBook:false,
display:function(){}
}

方式三

var Book = (function() {
//静态私有变零
var bookNum = 0;
//静态私有方法
function checkBook(name){}
//创建类
function _book(newId,newName,newPrice){
//私有变量
var name,price;
name = newName;
price = newPrice;
//私有方法
function checkID(id){}
//特权方法(创建的对象可以访问)
this.getName = function(){return name;};
this.getPrice = function(){return price;};
this.setName = function(mingcheng){name = mingcheng;};
this.setPrice = function(){}; //公有属性(对象可以访问)
this.id = newId;
//公有方法(对象可以访问)
this.copy = function(){};
bookNum++;
if(bookNum>100){
throw new Error('我们仅出版100本书');
}
//构造器
this.setName(name);
this.setPrice(price);
} //构造原型
_book.prototype = {
//静态公有属性
isJSBook: false,
//静态公有方法
display:function(){ return 'hello world'}
}; return _book;
})(); var book = new Book(10,'javascript',100); console.log(book);
console.log(book.isJSBook);
console.log(book.getName());
console.log(book.id);
console.log(book.getPrice());
book.setName('test01');
console.log(book.getName());
console.log(book.display());

测试环境node.js 版本8.10.0

有版权问题请留言,或加我qq362601125

参考列表

1.《JavaScript设计模式》作者张荣铭

JavaScript 面向对象的编程(二) 类的封装的更多相关文章

  1. Javascript面向对象基础(二)

    一: 用定义函数的方式定义类在面向对象的思想中,最核心的概念之一就是类.一个类表示了具有相似性质的一类事物的抽象,通过实例化一个类,可以获得属于该类的一个实例,即对象.在JavaScript中定义一个 ...

  2. python学习笔记--面向对象的编程和类

    一.面向对象的编程 面向对象程序设计--Object Oriented Programming,简称oop,是一种程序设计思想.二.面向对象的特性类:class类,对比现实世界来说就是一个种类,一个模 ...

  3. C++面向对象高级编程(五)类与类之间的关系

    技术在于交流.沟通,转载请注明出处并保持作品的完整性. 本节主要介绍一下类与类之间的关系,也就是面向对象编程先介绍两个术语 Object Oriented Programming   OOP面向对象编 ...

  4. Javascript 面向对象的编程思想

    面向对象,首先得有类的概念,没有类造不出来对象,,Javascript把函数名看成类. 其次分为不同结构层,如三层架构.MVC.MVVM. 本文根据实际项目演练,分为几个适用的结构层,如果项目不大一般 ...

  5. C++面向对象高级编程(二)基础篇

    技术在于交流.沟通,转载请注明出处并保持作品的完整性. 概要 知识点1.重载成员函数 知识点2 . return by value, return by reference 知识点3 重载非成员函数 ...

  6. JavaScript 面向对象的编程(三) 类的继承

    定义父类和子类的继承关系 //声明父类 function SuperClass(){ this.superValue = true; } //为父类添加共有方法 SuperClass.prototyp ...

  7. 《JavaScript面向对象的编程指南》--读书笔记

    第一章.引言 1.5 面向对象的程序设计常用概念 对象(名词):是指"事物"在程序设计语言中的表现形式. 这里的事物可以是任何东西,我们可以看到它们具有某些明确特征,能执行某些动作 ...

  8. python基础(25):面向对象三大特性二(多态、封装)

    1. 多态 1.1 什么是多态 多态指的是一类事物有多种形态. 动物有多种形态:人,狗,猪. import abc class Animal(metaclass=abc.ABCMeta): #同一类事 ...

  9. Java面向对象 第3节 类的封装和继承

      一.封装 封装的概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的访问和操作. 封装的2个大致原则:1)把尽可能多的东西隐藏起来,对外提供便捷的接口 ...

随机推荐

  1. Linux C编程之一:Linux下c语言的开发环境

    ---恢复内容开始--- 今天开始根据Linux C编程相关视频的学习所做的笔记,希望能一直坚持下去... 1.开发环境的构成 编辑器:VI: 编译器:选择GNU  C/C++编译器gcc: 调试器: ...

  2. Unity WebGL请求Http接口出现的Cors跨域问题

    1.运行环境 (1)WebGL运行浏览器:Firfox Quantum 67.0(64位) (2)服务端API运行环境:IIS,.Net Core 2.1 API 2.问题:CORS 头缺少Acces ...

  3. [BZOJ5109/CodePlus2017]大吉大利,晚上吃鸡!

    Description 最近<绝地求生:大逃杀>风靡全球,皮皮和毛毛也迷上了这款游戏,他们经常组队玩这款游戏.在游戏中,皮皮和毛毛最喜欢做的事情就是堵桥,每每有一个好时机都能收到不少的快递 ...

  4. 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 Train Seats Reservation

    You are given a list of train stations, say from the station 11 to the station 100100. The passenger ...

  5. 二分图最大匹配(匈牙利算法) URAL 1721 Two Sides of the Same Coin

    题目传送门 /* 题意:三种人,statements,testdata,anthing.要求两个人能完成s和t两个工作,且rank相差2 二分图匹配:此题学习建图技巧,两个集和内部一定没有边相连,ra ...

  6. magento 翻译使用实例

    在自定义的模块中若想要使用翻译,需在config.xml中加入如下配置 <config> <adminhtml> //后台 <translate> <modu ...

  7. 用 jQuery 实现简单倒计时功能

    问题场景:假设某个活动截止时间给定了,现在需要开发一个页面可以自动刷新距离活动截止时间还剩多少天? <!DOCTYPE html> <html xmlns="http:// ...

  8. 设计基于HTML5的APP登录功能及安全调用接口的方式

    转自:http://blog.csdn.net/linlzk/article/details/45536065 最近发现群内大伙对用Hbuilder做的APP怎么做登录功能以及维护登录状态非常困惑,而 ...

  9. [ HAOI 2008 ] 圆上的整点

    \(\\\) Description 给出一个整数 \(r\) ,求圆 \(x^2+y^2=r^2\) 上的整点数. \(r\le 2\times 10^9\) \(\\\) Solution 神题. ...

  10. javascirpt中的数字在计算机内存储为多少Byte

    JavaScript内部,所有数字都是以64位浮点数形式储存,即使整数也是如此 8 Byte = 64bit Javascript中,由于其变量内容不同,变量被分为基本数据类型变量和引用数据类型变量. ...