初识JavaScript和面向对象
1.javascript基本数据类型:
number: 数值类型
string: 字符串类型
boolean: 布尔类型
null: 空类型
undefault:未定义类型
object: 基本数据类型的父类
2.创建对象
(1)自定义对象:
语法:var 对象名=new object();
例: var flower=new Object();
flower.name="长春花";
flower.showName=function(){
// this.name="牡丹花";//重新赋值
alert(this.name);
}
var flower1=new flower();
调用方式:对象名.属性或者方法
(2)内置对象:
String(字符串)对象
Date(日期)对象
Array(数组)对象
Boolean(逻辑)对象
Math(算数)对象
RegExp对象
3.构造函数:
构造函数的步骤:
(1)创建一个新对象
(2)将构造函数的作用域给新对象(this就指向这个新对象)
(3)执行构造函数中的代码
(4)返回新对象
语法:function 函数名(){} 注:函数名首字母大写
例:function Flower(){
}
constructor属性:
instanceof属性:
两种方式均是标识对象类型的(判断关键字前后是否具有上下级关系(层次)),但常用第二种方法
例:
// alert(flower2.constructor==Flower);
// alert(flower1.constructor==flower2.constructor);
alert(flower1 instanceof Object);//判断关键字前后是否具有上下级关系(层次)
alert(flower1 instanceof Flower);
4.原型对象:
使用prototype属性调用构造函数而创建的那个对象实例的原型对象,
使用原型对象的好处就是可以让所有对象实例共享它所拥有的属性和方法
语法:函数名.prototype.属性名="值";
例:function Flower(){}//创建一个无参的构造函数
Flower.prototype.name="长春花";//给Flower原型对象创建属性并赋值
Flower.prototype.area="非洲";
5.原型链:
例:
//创建一个父类
function Humans(){//创建一个无参的构造
this.foot=2;
}
Humans.prototype.getFoot=function(){
alert(this.foot);
}
//创建子类
function Man(){
this.head=1;
}
Man.prototype =new Humans();//原型继承一定要写在原型对象赋值之前
Man.prototype.getHead=function(){
alert(this.head);
}
var man1=new Man();
alert(man1.getFoot());
man1.getHead();
//alert(man1 instanceof Humans);
// alert(man1 instanceof Man);
alert( typeof man1);
alert(man1.valueOf());
6.对象继承:
function Humans(){//创建一个无参的构造
this.name=["aa","bb","cc"];
}
//创建子类
function Man(){
this.head=1;
}
Man.prototype =new Humans();
var man1=new Man();
man1.name.push("dd");//如果你赋值的是引用数据类型,相当于改原构造中的值
man1.getName();
var man2=new Man();
man2.getName();
7.借用构造函数:
语法:apply([thisObj[,argArray]]) 应用某一对象的一个方法,用另一个对象替换当前对象
call([thisObj[,arg1[,arg2[,argn[,...]]]]]) 调用一个对象一个方法,以另外一个对象替换当前对象
例: function Humans(){
alert("无参构造");
this.clothing=["哈哈","嘻嘻","呵呵"];
}
function Humans(name){
alert("有参构造");
this.name=name;
}
function Man(){
//Humans.call(this);//继承了Humans对象无参构造
Humans.call(this,"嘿嘿");//调用有参构造
this.age=19;
}
var man1=new Man();
alert(man1.clothing);//undefind
alert(man1.name);//嘿嘿
alert(man1.age);//19
8:组合函数:
组合继承有时也叫伪经典继承,指的是将原型链和借用狗杂函数的技术结合到一块,从而发挥二者之长
例: function Humans(name,age){//创建有参构造
this.name=name;
this.age=age;
}
Humans.prototype.getName= function () {//创建Humans原型对象的方法
alert(this.name);
}
function Man(name,age){//创建Man有参构造
Humans.call(this,name,age);//继承父类的构造
/* 等价于this.name=name;
this.age=age;*/
this.head=1;
}
Man.prototype=new Humans();//继承父类的原型对象的属性
Man.prototype.getHead=function(){
alert(this.head);
}
var man1=new Man("aa",20);
man1.getName();
//alert(man1.name);
//alert(man1.age);
var man2=new Man("bb",25);
man2.getName();
// alert(man2.name);
// alert(man2.age);
// Man.prototype=new Humans();
初识JavaScript和面向对象的更多相关文章
- JavaScript的面向对象编程(OOP)(一)——类
在学习JavaScript面向对象的编程之前,需要知道,并了解面向对象的一些基本的常识.初学者中大多数都以为面向对象中,面向对象的编程是很重要和占据很大一部分精力.笔者在之前也是认为OOP是面向对象的 ...
- javascript进阶——面向对象特性
面向对象的javascript是这门语言被设计出来时就考虑的问题,熟悉OOP编程的概念后,学习不同的语言都会发现不同语言的实现是不同的,javascript的面向对象特性与其他具有面向对象特性的语言的 ...
- 笔记一、初识 Javascript
一.初识 Javascript javascript是一种专为与网页交互儿设计的脚本语言.由三部分组成:ECMAScript (ECMA-262定义) : 提供核心语言功能文档对象模型(DOM): ...
- Day15 HTML补充、初识JavaScript
一.上节回顾 上节回顾: HTML 头部信息:编码.title.style.link(导入css文件) 身体: 内联 块级 --->inline-block(既有内联效果又有块级效果) a标签: ...
- javascript的面向对象详解
每次说到javascript到面向对象,总感觉自己心里懂,但是却不知道该怎么说,这就是似懂非懂到表现,于是乎,每次一说,就要到处去查找资料,零零碎碎到看了一些,感觉有懂了,但是过段时间,好像又不知道是 ...
- 初识JavaScript(一)
初识JavaScript(一) 最近由于工作的需要的原因,我从一个写后台的现在让我转到写前端,再加上我的js部分特别的差,所以我现在开始学习js部分的知识. 我的第一篇博文就这样开始写了.俗话说,千里 ...
- 浅谈JavaScript的面向对象程序设计(四)
本文继续讲解JavaScript的面向对象程序设计.继承是面向对象语言中的一个基本概念,面向对象语言支持两种继承实现方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.但是在 ...
- 《前端之路》之 初识 JavaScript
01 初识 JavaScript 作为在码农圈混迹了 四五年的老码畜来说,学习一门新的语言,就仿佛是老司机开新车一样 轻车熟路. 为什么会这么快呢? 因为各种套路啊- 任何一种计算机语言的最开始都是和 ...
- JavaScript的面向对象原理之原型链详解
一.引言 在16年的10月份,在校内双选会找前端实习的时候,hr问了一个问题:JavaScript的面向对象理解吗?我张口就说“JavaScript是基于原型的!”.然后就没什么好说的了,hr可能不知 ...
随机推荐
- c++稍微复杂桶排序(未完待续~)
由于上次的桶排序占用空间太多,这次又有了一个新的办法 直接上代码: #include <bits/stdc++.h> using namespace std; int n; void bu ...
- 第九章 webase 分布式中间件平台快速部署
鉴于笔者以前各大博客教程都有很多人提问,早期建立一个技术交流群,里面技术体系可能比较杂,想了解相关区块链开发,技术提问,请加QQ群:538327407 参考资料:https://webasedoc.r ...
- .net持续集成cake篇之使用vs或者vscode来辅助开发cake脚本
使用Visual Studio来开发工具 前面我们都是通过手写或者复制的方法来编写Cake文件,Cake使用的是C#语言,如果仅使用简单的文本编辑器来编写显然效率是非常低下的,本节我们讲解如何使用ca ...
- string的赋值
string的赋值 string s1="123456"; 一: 只能在刚开始定义的时候用: (1) 从后往前赋值 string s2(s1,3); ...
- TencentTbs腾讯浏览服务 x5内核使用
Tencent TBS (下简称TBS) 腾讯浏览服务 What is it? 百度百科解释: 腾讯浏览服务(Tencent Browsing Service,以下简称TBS),由腾讯X5浏览服务升级 ...
- c语言进阶6-指针
指针是c语言的一个重要组成部分 是c语言的核心.精髓所在,用好指针可以在c语言编程中起到事半功倍的效果.一方面,可以提高程序的编译效率和执行速度以及实现动态的存储分配:另一方面,使用指针可使程序更灵活 ...
- Java EE.JSP.内置对象
JSP根据Servlet API 规范提供了某些内置对象,开发者不用事先声明就可以使用标准的变量来访问这些对象.JSP提供了九中内置对象:request.response.out.session.ap ...
- linux初学者-网卡的链路聚合篇
linux初学者-网卡的链路聚合篇 网卡的链路聚合就是将多块网卡连接起来,当一块网卡损坏,网络依旧可以正常运行,可以有效的防止因为网卡损坏带来的损失,同时也可以提高网络访问速度. 网卡的链路聚合一般常 ...
- Flink实战(八) - Streaming Connectors 编程
1 概览 1.1 预定义的源和接收器 Flink内置了一些基本数据源和接收器,并且始终可用.该预定义的数据源包括文件,目录和插socket,并从集合和迭代器摄取数据.该预定义的数据接收器支持写入文件和 ...
- spark 源码分析之二十二-- Task的内存管理
问题的提出 本篇文章将回答如下问题: 1. spark任务在执行的时候,其内存是如何管理的? 2. 堆内内存的寻址是如何设计的?是如何避免由于JVM的GC的存在引起的内存地址变化的?其内部的内存缓存 ...