Java工厂构造函数参数,javascript 面向对象之构造函数、工厂方式、字面量

什么是面向对象编程

面向对象的英文全称:Object Oriented Programming , 简称OOP

首先我们要先了解面向过程的编程思想, 就是代码从上到下都没有封装的意思,某写代码裸露在外、没有模块化、代码杂乱无章的写法. 并且还不好维护,也不便于后期二次修改

面向对象的编程思想: 通俗的说就是要具备代码好维护、代码重用性高、耦合度低、高内聚、模块化、便于修改

名词解释:

高内聚: 指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。

低耦合: 指让每个模块尽可能的独立完成某个特定的子功能。

面向对象的主要特点:

抽象:抓住核心问题, 去掉相关性不强的代码, 把类似一样的功能性代码放在一起、

[把这个功能所需要的相同功能代码抽取出来,然后进行封装]

封装:只能通过对象来访问方法 [提高可维护性]

继承:从已有对象上继承出新的对象 [提高代码重用性]

多态:让同一个[接口] 被不同的对象所继承或者实现,从而产生不同的处理方式

js是一门基于对象的语言

js是一门解释型的语言

js是一门脚本语言、弱类型语言!

分析什么是对象?

对象:具有特征和行为或者说 有属性和方法, 具体特指的某一个事物

属性 就是变量 表示一个对象的状态 对象下面的变量就叫做:属性

方法 就是函数 表示一个对象的行为过程 对象下面的函数就叫做:方法

javascript创建对象的三种方式

1.调用系统的构造函数创建对象 创建对象也叫实例化对象, Object是系统的构造函数

//语法

var 变量名 = new Object();

如何添加对象的属性和方法

添加属性: 如何添加属性?

var 变量名 = new Object();

变量名.属性名=值;

添加方法: 如何添加方法?

var 变量名 = new Object();

变量名.方法名=function(){

..代码段...

}

function 函数名(){

}

变量名.方法名=函数名;

案例:

var obj=new Object();

obj.name='张三';

obj.age=33;

obj.city='重庆';

obj.say=function(){

alert('张三说话了!');

}//欢迎加入Java开发交流君样:909038429

console.log(obj);

这种创建方式的缺点是:

1.如果使用这种方式创建了多个对象、会产生对象不能分辨出到底属于哪一个类型!

2.每创建 一个对象都需要new Object() 一次 耗费内存空间、 不能一次性创建多个对象

小知识: 如何判断某一个对象引用变量是不是属于某一个类型?

语法: 对象引用变量名称 instanceof 类名称 返回true就是属于这个类 返回false不属于这种类型

this关键字的基本使用

在当前的对象方法中,可以使用this关键字代表当前对象

小知识: 访问对象属性和方法的另一种写法: 对象[“属性名”] 或 对象方法名

案例代码如下:

var obj2=new Object();

obj2.name='李四';

obj2.age=66;

obj2.city='北京';

obj2.say=function(){

console.log('李四说话了');

console.log(this.name);

}

console.log(obj2["name"]);

obj2["say"]();

2.工厂方式与构造函数 工厂方式也可以叫做封装函数

优点: 代码复用性提升、不同的数据当做参数进行传递

自定义构造函数创建对象

了解一下如何一次性创建多个对象?

案例代码如下:

function createObject(username,age){

var obj=new Object();

obj.name=username;

obj.age=age;

obj.city='重庆';

obj.say=function(){

console.log(this.name+'的年龄是:'+this.age);

}//欢迎加入Java开发交流君样:909038429

return obj;

}

var obj1=createObject('张三',23);

var obj2=createObject('李四',66);

obj1.say();

obj2.say();

工厂方法 方法2:自定义构造函数创建对象, 自己定义一个构造函数,创建对象

优点: 可以区分出对象引用属于哪一类

案例代码如下

//Person就是构造函数

function Person(username,age,city){

this.name=username;

this.age=age;

this.city=city;

this.say=function(){

console.log(this.name+'的年龄是:'+this.age);

}

}

var obj1=new Person('张三',33,'北京市');

var obj2=new Person('李四',66,'重庆市');

obj1.say();

obj2.say();

小结: 通过上面的案例可以小结出一个概念: 就是函数如果前面有new关键字,那么这个函数就是构造函数,否则就是一个普通函数

==在javascript中使用new关键字来修饰一个 普通函数的解答

系统做4件事情

1.首先这个函数就成为了 构造函数, 因为 new 后面跟一个函数 这样的函数就叫构造函数

2.在内存中开辟一块(申请一块空闲的空间)空间,存储创建的新对象

3.构造函数中的this就设置为当前的对象

4.就是说当new写在一个函数前面的时候、这个函数中的this就是创建出来的对象、并且函数的返回值直接默认就是this了 隐式返回,可以使用如下代码进行测试得出结论

function Obj() {

}

//观察返回值

console.log(Obj()); //undefined

console.log(new Obj()); //Obj {}

//所以this这个对象会返回, [ 这里的返回是自动的 无需在构造函数中使用return]

5.如果有设置对象的属性和方法就设置值

3.字面量的方式创建对象

json对象是创建对象的一种字面量表示形式

var 变量名 = { } //这就叫字面量方式创建对象

案例代码

var obj={};

obj.name='张三';

obj.age=22;

obj.city='北京市';

obj.fn=function () {

console.log('我的名字叫'+this.name+' 我的年龄是:'+this.age+' 我在'+this.city+'生活和工作!');

}

obj.fn();

推荐写法:

字面量优化后的形式:其实就是json数据格式的形式 [推荐写法]

案例代码

var obj2={//欢迎加入Java开发交流君样:909038429

name:'张三',

age:22,

city:'北京市',

fn:function () {

console.log(this);

console.log('我的名字叫'+this.name+' 我的年龄是:'+this.age+' 我在'+this.city+'生活和工作!');

}

};

obj2.fn();

注意: var obj =new Object() 与 var obj = { } 是完全一样的 只是一个在内存中的堆区中开空间 而另一个在栈区开辟空间

function Obj() {

}

var test=new Obj(); //在内存中的堆区中开空间

console.log(test);

var json={}//在栈区开辟空间 用完即释放

console.log(json);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HDU - 6186】CS Course(按位与,按位或,按位异或的区间统计,二进制拆位)

题干: Little A has come to college and majored in Computer and Science. Today he has learned bit-operations in Algorithm Lessons, and he got a problem as homework. Here is the problem: You are giving n non-negative integers a1,a2,⋯,ana1,a2,…

mysql不能存字母,使用不常見的字母/符號時,MySql數據庫不能正確存儲數據

I have a simple form that sends (via php) some variables to a mySql database.我有一個簡單的表單,通過PHP發送一些變量到mySql數據庫。The problem is that its focused to Portuguese audience, and we use several unusual letters, like "" and ""…

【HDU - 6184】Counting Stars(三元环计数,二分,优化暴力,O(m*sqrt(m)),图论)

题干: Little A is an astronomy lover, and he has found that the sky was so beautiful! So he is counting stars now! There are n stars in the sky, and little A has connected them by m non-directional edges. It is guranteed that no edges connec…

php 取oracle图片,在PHP中将图片存放ORACLE中_php

我这里提供一个用php操纵blob字段的例子给你,希望能有所帮助!这个例子是把用户上传的图片文件存放到BLOB中。假设有一个表,结构如下:CREATE TABLE PICTURES (ID NUMBER,http://www.gaodaima.com/44856.html在PHP中将图片存放oracl…

【HDU - 6183】Color it(CDQ分治 或 动态开点线段树)

题干: Do you like painting? Little D doesnt like painting, especially messy color paintings. Now Little B is painting. To prevent him from drawing messy painting, Little D asks you to write a program to maintain following operations. The speci…

php create()方法,ThinkPHP中create()方法自动验证实例

ThinkPHP中create()方法自动验证实例2020-06-16 04:24:32自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证。原理:create()方法收集表单($_POST)信息并返回,同时触发表单自动验证&#x…

【蓝桥杯官网试题 - 历届试题】格子刷油漆(dp)

题干: 问题描述 X国的一段古城墙的顶端可以看成 2*N个格子组成的矩形(如下图所示),现需要把这些格子刷上保护漆。   你可以从任意一个格子刷起,刷完一格,可以移动到和它相邻的格子(对角相邻也…

php 解析 ini文件,php解析.ini文件

1.myphp.ini文件autostart false font_size 12font_color red$string[access] 进入;$string[accesshelp] 进入帮助;$string[accesskey] 进入验证 {$a};$string[accessstatement] 进入声明;$string[activitynext] 下一个活动;$string[activityprev] 前一个活动;$string…

【CSU - 1004】Xi and Bo(并查集,裸题)

题干: Bo has been in Changsha for four years. However he spends most of his time staying his small dormitory. One day he decides to get out of the dormitory and see the beautiful city. So he asks to Xi to know whether he can get to another bus …

oracle软件静默安装程序,【oracle】静默安装 oracle 11gr2

【序言】oracle 提供了静默安装方法在不适用图形界面的情况下安装 oracle 软件 ,创建db,配置netca,快速完成oracle 的部署。在以下情形中可以使用静默安装a OUI 的 GUI 界面远程交互比较慢 .b 数据库服务器无法使用图形界面访问.c 批量部署oracle (标准环境统一情况下可以使用o…

【2050 Programming Competition - 2050 一万人码 】非官方部分题解(HDU)

1001 开场白 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 12147 Accepted Submission(s): 3502 Problem Description 来自世界各地的年青人在 https://2050.org.cn 握手团聚, 他们是航空…

oracle数据库建表视频,Oracle数据库的创建表全

CREATE TABLE "库名"."表名" ("FEE_ID" VARCHAR2(10 BYTE) constraint ABS_FEE_ID primary key,--主键,必须要有序列"BANK_GROUP_ID" VARCHAR2(5 BYTE),"ABS_PRODUCT_ID" VARCHAR2(30 BYTE))TABLESPACE "表…

oracle的脚本语言是什么意思,Oracle中的sql脚本语言中的循环语句介绍

--sql脚本语言的循环介绍&#xff1a;--1.goto循环点。declarex number;beginx:0;--变量初始化&#xff1b;<>--设置循环点。x:x1;dbms_output.put_line(x);--循环体if x<9 then --进入循环的条件。goto repeat_loop; --用goto关键字引导进入循环。end i…

【poj题集整理】【存下来并不会看】

主要是整理起来自己用的。网上有多个版本。 初级: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算…

oracle排名怎么去除空值影响,Oracle排序中null值处理方法讲解

1、缺省处理oracle在order by 时缺省认为null是最大值&#xff0c;所以如果是asc升序则排在最后&#xff0c;desc降序则排在最前2、使用nvl函数nvl函数可以将输入参数为空时转换为一特定值&#xff0c;如nvl(employee_name,’张三’)表示当employee_name为空时则返回’张三’&a…

【ZOJ - 3870】Team Formation(异或,思维)

题干&#xff1a; For an upcoming programming contest, Edward, the headmaster of Marjar University, is forming a two-man team from N students of his university. Edward knows the skill level of each student. He has found that if two students with skill lev…

oracle dump enq hw,经典故障分析 - ASSM引发的索引争用与 enq HW -contentio

作者介绍&#xff1a;孙加鹏 云和恩墨技术顾问六年Oracle技术顾问经验&#xff0c;所服务的行业包括电信运营商、金融业、制造业等。擅长Oracle的故障诊断、高可用架构、升级迁移等。目前主要服务于上海金融类客户。1故障概述2017年07月24日11:58左右&#xff0c;客户核心数据库…

【ZOJ - 3946】Highway Project(最短路子图,维护双权值,贪心,最小树形图)

题干&#xff1a; Edward, the emperor of the Marjar Empire, wants to build some bidirectional highways so that he can reach other cities from the capital as fast as possible. Thus, he proposed the highway project. The Marjar Empire has N cities (including…

oracle 主键约束复制,Oracle主键及约束

Oracle主键Primary Key包含非空约束及唯一约束。添加主键的语句alter table table_nameadd constraint cons_name primary key(col_name);查看主键是否被创建成功select dbms_metadata.get_ddl(‘OBJECT_TYPE‘,‘NAME‘,‘SCHEMA‘) from dual;OBJECT_TYPE (TABLE,PARTITION,I…

【ZOJ - 3956】Course Selection System(01背包)

题干&#xff1a; There are n courses in the course selection system of Marjar University. The i-th course is described by two values: happiness Hi and credit Ci. If a student selects m courses x1, x2, ..., xm, then his comfort level of the semester can be…