【原生js】js面向对象三大特征之封装笔记

所谓封装,就是把抽象出的属性和对属性的操作写到类的定义中,称为封装。

js中实现封装主要有两种封装(公开,私有)

function Person(name,sal){
    this.name=name; //公开
    var sal=sal;//私有

    this.showInfo=function(){ //公开
    window.alert(this.name+” ”+sal);
}

showInfo2(){ //把函数私有化.
    window.alert(“你好”+this.name+” ”+sal)
}
}

A.构造函数方式与原型方式给对象添加方法的区别

 1 //通过构造函数方式给对象添加方法
 2 function Dog(name){
 3     this.name=name;
 4     this.shout=function(){
 5         window.alert("小狗尖叫"+this.name);
 6     }
 7 }
 8 var dog1=new Dog("aa");
 9 var dog2=new Dog("bb");
10 if(dog1.shout==dog2.shout){
11     window.alert("相等");
12 }else{
13     window.alert("不相等");
14 }
15
16 //会输出“不相等”
 1 //通过原型方式给对象添加方法
 2 function Dog(name){
 3     this.name=name;
 4 }
 5 Dog.prototype.shout=function(){
 6     window.alert("小狗尖叫"+this.name);
 7 }
 8 var dog1=new Dog("aa");
 9 var dog2=new Dog("bb");
10 if(dog1.shout==dog2.shout){
11     window.alert("相等");
12 }else{
13     window.alert("不相等");
14 }
15
16 //会输出“相等”

说明通过构造函数来分配成员方法,给每个对象分配一份独立的代码。这样的弊端就是如果对象实例有很多,那函数的资源占用就会很大,而且有可能造成内存泄漏。而原型法是大家共享同一份代码,就不会有那种弊端。

1.通过原型法分配的函数是所有对象共享的;

2.通过原型法分配的属性是独立的;

3.如果希望所有的对象使用同一个函数,最好实用原型法添加方法,这样比较节省内存。

4.

function Person(){

}

// 创建对象
var p1=new Person();
p1.say();
// 这时用原型法分配
Person.prototype.say=function(){
    window.alert("ok");
}

//这样执行会报错。p1.say()必须写到  prototype.say下方。
//说明 prototype方式是后置绑定

相关阅读:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html


时间: 2024-10-25 20:14:43

【原生js】js面向对象三大特征之封装笔记的相关文章

面向对象三大特征之封装与static——(Java学习笔记四)

面向对象     编程本质:以类的方式组织代码,以对象的方式组织(封装)数据 对象:具体的事物,某个类的对象(实例) 类:是对对象的抽象,用于描述同一类型的对象的一个抽象概念 对象和类的关系:特殊到一般,具体到抽象 三大特征: 封装 继承 多态 构造器:又叫构造方法(constructor),用于构造类的实例 格式:修饰符 类名(形参列表){ //语句 } 构造器的方法名与类名一致 通过new关键字调用 当没有定义构造方法时,系统会自定义一个无参构造函数 构造方法可以重载 作用:构造该类的对象,

【原生js】js面向对象三大特征之多态笔记 (

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 7 </head> 8 <script> 9 /*多态的基本概念:一个引用类型(变量)在不同情况下的多种状态. 10 js本身是无态的,天生就支持多态.*/ 11 12 //M

【原生js】js面向对象三大特征之继承笔记

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 7 </head> 8 <script> 9 //中学生 10 function MidStu(name,age){ 11 this.name=name; 12 this.ag

简述Java面向对象三大特征:封装、继承、多态

封装: 把对象的全部属性和服务结合在一起,形成不可分割的独立单位: 尽可能隐藏内部细节.(数据隐藏.隐藏具体实现的细节) public.private.protected.default public:既可以跨类访问,也可以跨包(package)访问 private:只能被该类对象访问,子类不能访问,更不能跨包访问 protected:只能被该类本身和子类访问,即使子类不在包中也可以访问 default:即不添加任何修饰符,只允许同一个包进行访 继承: 1. is a 关系(eg:经理 is a

面向对象三大特征之封装

上半句+下半句.三流的书籍和博客只会告诉你上半句,因为它们的作者自己也不知道下半句,而让我们接近真理,走的更远的是下半句.并且下半句往往非常简单. 上半句就是一些半吊子挖出的天坑,就算下半句非常简单.因为它们的误导,让无数人很多年也接触不到讲述真理的下半句. 时刻警醒:我们要学习的是讲述真理的下半句. 1.什么是封装? 封装: 封装说了2个内容,一个是装,一个是封. 装:提供了一种聚合方式,提供了一种组合方式. 把东西装在一起,看作一个整体. 1.能够描述一个事物 事物通常具有属性和行为,我们通

c++面向对象三大特征封装、继承和多态知识总结

面向对象三大特征:封装,继承,多态: 一.封装:该公开的就公开话,该私有的就隐藏掉,主要是由public,private实现:作用是便于分工和分模块,防止不必要的扩展: 二.继承:就是一种传承,可以把父类型中的数据传承到子类中,子类除了传承了父类的数据之外,还可以对父类型进行扩展: 公开继承  public 保护继承  protected 私有继承  private 保护成员:在子类和本类中可以访问,其他不行: 1.公开继承:在公开继承下,父类型中的数据是公开的到子类型中权限是公开的:父类型中保

类与对象 面向对象和面向过程对比 面向对象三大特征:封装 继承 多态

 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门 面向对象:大象, 你进冰箱. 此时主语是大象. 我操纵的是大象. 此时的大象就是对象 1. 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤, 即, 先?干什么, 后干什么. 基于该思想编写程序就好比在编写一套流水线. 是一种机械 式的编程

(一)Python入门-6面向对象编程:07面向对象三大特征(封装、继承、多态)-继承

一:面向对象三大特征介绍 Python是面向对象的语言,也支持面向对象编程的三大特性:继承.封装(隐藏).多态. 封装(隐藏) 隐藏对象的属性和实现细节,只对外提供必要的方法.相当于将“细节封装起来”,只 对外暴露“相关调用方法”. 通过前面学习的“私有属性.私有方法”的方式,实现“封装”.Python 追求简洁的语法,没有严格的语法级别的“访问控制符”,更多的是依靠程序员自觉实现. 继承 继承可以让子类具有父类的特性,提高了代码的重用性. 从设计上是一种增量进化,原有父类设计不变的情况下,可以

PHP面向对象三大特征

<?php//PHP 面向对象三大特征 封装 继承 多态 <抽象> //封装 /** * @author bin * *//* class Person{ //encapsulate private $name; private $age; //这个就好比我们Java中的get set 想spring注入的 通过通过set方法 通过构造函数 一样 public function __set($columnName,$value){ $this->columnName = $valu