面向对象的相关理论

面向对象
一、编程范式:
1.命令式编程,2.声明式
命令式编程的思想:面向过程,面向对象。声明式的思想:DSL(领域特定语言)
命令式编程的定义:告诉计算机以什么指令来执行代码。注重中间过程。
声明式的定义:告诉计算机想要什么结果就让计算机自己去执行。不需要关心过程。
面向过程:一步一步的向下执行。
面向对象:看待任何东西,先看待特征、行为。(接近人的思维)
二、产生对象的方法:
1.基于类的面向对象
2.基于原型的面向对象
对象是类的实例,类是对象的抽象。类不是真实存在的。js中没有的类的概念,js是通过原型面向对象。js是通过原型拷贝出来的。每一个对象都有一个原型,原型也是对象。
三、js中构建对象的方法:
1.字面量对象(json格式)例如:
var stu={
name:"小明",
age:20,
learn:function(){console.log(this.name+"学习");}
}
构造函数:构造对象,1>首字母大写,用this,此时this指向对象。
var Student={
this.name:"小明",
this.age:20,
this.learn:function(){console.log(this.name+"学习");}
}
var xm=new Student("小明",20); //我们用new调用函数
xm.learn();
同一构造函数构造的对象,它们的原型是一样的,
xm.constructor(构造函数本身)
四、为构造函数动态添加属性:
1.在构造函数中添加属性。
得到函数原型:1.Student.prototype.gender="男";
2.xm.__proto__(指向各自原型)
xm.__proto__ == Student.prototype(true)
xm.__proto__和Student.prototype两者的区别:
1>通过构造函数名,prototype可以读也可以属性。
对象.__proto__只可以读不可以属性。
2>prototype只能访问在自身,不能向上访问。__proto__可以向上追逐到向上的原型。
3.构造函数+原型:
Student.prototype.learn=function(){console.log(this.name+"学习");}
属性写在构造函数中,方法写在原型中。
var Student={
this.name=name,
this.age=age,
}
4.工厂方法
5.改进式构造函数+原型
在构造函数中用if(!Student._init){
Student.prototype.gender="男";
Student.prototype.learn=function(){console.log(this.name+"学习");}
Student._init=true; //给对象——init赋值
}

五、垃圾回收器(GC)
定义:判断对象是否被其他所引用,把没有在引用的对象,有很大机率被关闭。(不断循环)
缺点:自动管理,不能人为管理。
但是,js中,可以把不用的变量设为stu=null;那么一个对象不能太大。
一旦垃圾回收器太忙,处理不过来,网页等会就会卡住 ,一旦它空闲了,网页就会恢复。
六、对象的运算符
1.new
2.delete(删一个对象的属性)。例如:delete xm.name.
如果删原型的东西必须要原型里有。才能删除。
七、对象的语句
1.with
例如:
with(xm){console.log(name);} //xm是一个对象。 with对效率影响很大,不建议使用。
2.for..in(循环一个对象里的属性)
for(var k in xm){
console.log(xm[k]); //循环xm中的所有属性。并打印中控制台
}

时间: 2024-10-26 13:08:36

面向对象的相关理论的相关文章

Python之路【第五篇】:面向对象和相关

Python之路[第五篇]:面向对象及相关 面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 1 2 3 4 5 6 class Foo(object):     pass obj = Foo() isinstance(obj, Foo) 二.issubclass(sub, super) 检查sub类是否是 super 类的派生类 1 2 3 4 5 6 7 class F

CloudStack(一)简介及相关理论介绍

简介 CloudStack(cloudstack.apache.org)是IaaS类型云计算的一种开源解决方案,同类的解决方案有OpenStack.OpenNebula等,CloudStack是以java语言所研发并具有高可用性.可扩展性.丰富的UI功能.Hypervisor 的多样性等等..(更多请见http://www.cloudstack-china.org/2013/11/2702.html),它可以帮助用户利用自己的硬件提供类似于Amazon EC2那样的公共云服务.CloudStac

相关理论和技术

本章将介绍系统开发的相关理论和技术,包括系统的理论依据和开发环境. 2.1系统开发理论依据 2.1.1 网络爬虫技术 网络爬虫(Web crawler),是一种按照一定规则,自动的抓取万维网信息的程序或脚本. 2.1.2HTML HTML(HyperText Markup Language),即超文本标记语言,是指页面内可以包含非文字的丰富多彩的内容.HTML是标准通用标记语言的下一个应用,也是一种规范,一种标准,它通过程序中的标记来对网页中的内容进行排版与设计.HTML的结构包括提供关于网页信

网站优化相关理论概述

1.网站优化 网站优化即是网站为了提高用户满意度和网站价值,根据相应策略对网站视觉设计.布局和信息架构等做出的改善措施.网站优化概念有广义和狭义之分,狭义的网站优化就是搜索引擎优化,即为了提高搜索引擎收录和排名,根据总结出的搜索引擎工作原理所做的优化措施.广义上的网站优化不但包括搜索引擎优化,还包括舒适愉悦的视觉体验.层次清晰的网站导航.健全的用户反馈和客服机制.原创且更新及时的网站内容等方面.可见广义上的网站优化有独立于搜索引擎而存在的特性,涵盖范围较广,且形式灵活多样,但用于检测这些优化方面

VLAN、Trunk与三层交换机的相关理论知识

各位小伙伴大家好,本次和大家分享的是VLAN.Trunk与三层交换机的相关理论知识,接下来我会从下面几个方面为大家进行解析:1.VLAN的概念及优势2.VLAN的种类3.静态VLAN的配置4.Trunk介绍与配置5.三层交换机转发原理6.三层交换机的配置 VLAN概述与优势(虚拟局域网)分割广播域:分割的方式有如下两种:1.物理分割:将网络从物理上划分为若干个小网络,然后使用能隔离广播的路由设备将不同的网络连接起来实现通信缺点:缺乏灵活性2.逻辑分割:将网络从逻辑上划分为若干个小的虚拟网络,即V

JavaScript面向对象及相关知识

最近在学习JavaScript面向对象,写下自己的理解及相关资料,以备查阅. 一.面向对象中涉及的相关几个概念 1.作用域 所谓作用域,就是说属性和函数的可访问范围.在JavaScript中,作用域分为两种.全局作用域和局部作用域. 所有没有var 声明 或 定义于最外层函数和最外层函数外面即为全局作用域.也就是定义可以随意调用. 自定义函数内部用var声明的为局部作用域. var num = 1; //全局作用域 window.onload = function() { //最外层为全局作用域

Python之路【第五篇】:面向对象及相关

面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() isinstance(obj, Foo) 二.issubclass(sub, super) 检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Foo): pass issubclass(Bar

Python之路:面向对象及相关

其他相关 一.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 1 class Foo(object): 2     pass 3   4 obj = Foo() 5   6 isinstance(obj, Foo) 二.issubclass(sub, super) 检查sub类是否是 super 类的派生类 1 class Foo(object): 2     pass 3   4 class Bar(Foo): 5     pass 6   7 issubcl

【Python之路】第七篇--Python基础之面向对象及相关

面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关