JS对象基础 闭包等
一.我们知道js的基本数据类型包括:number,boolen,string,null及undefined;
看下面的一段代码:
var abcobject = {
firstname:"first",
lastname:"last",
sayname:function(){
alert("i'm" + this.name);
}
}
//注意以上的写法,是json格式书写方式,所以每句话之间用"逗号"分割,这叫键值对;
访问的方式:
(1).abcobject.firstname;
(2).person["firstname"],注意前面是"firstname"才能这样做;
(3).person["30"],注意前面是"30"才能这样用;
将person的值赋给P1,引用类型指向的是地址,访问是同块内的基本类型就是赋的值;
2.删除属性的方法:
var Person = {
name:"Kobe",
age:20,
sayname: function(){
alert("i'm" + this.name);
}
}
删除属性:
delete person.name;
注意几个属性:
writable:可读写性,取true或者false;
configurable:是否能删除;
enumerable:枚举性;
看以下的代码:
function Parent(name,age){
this.name = name;
this.age = age;
this.sayName = function(){
console.log(this.name);
}
function Child(name,age)
**this.obj = Parent;
this.obj(name,age);
delete this.obj;**
}
var c = new Child("zahngsan",22);
console.log(c.name);
//输出zhangsan;Chlid继承了Parent的属性;
除开这种call方法之外,还有apply的方法,看下面的代码:
**段的代码可以用Parent.call(this,name,age);代替;而call方法和apply方法意义相同,用法稍有不同:
function Parent(name,age){
this.name = name;
this.age = age;
this.sayName = function(){
console.log(this.name);
}
function Child(name,age)
apply(this,name,age);
}
var c = new Child("zahngsan",22);
console.log(c.name);
##2.原型链的方法##
function Parent(name,age){
this.name = name;
this.age = age;
this.sayName = function(){
console.log(this.name);
}
}
Parent.prototype.sayAge = function (){
console.log(this.age);
}
function Child (name,age,sex){
this.constructor(name,age);
this.sex = sex;
}
child.prototype = new Parent();
var c = new Child("zhangsan",30);
c.sayName;
c.sayAge;
这是重点,应该准确掌握理解:
##3.混合模式##
function Parent(name,age){
this.name = name;
this.age = age;
this.sayName = function(){
console.log(this.name);
}
}
有些不同;但是并未写完;
##闭包##
其实闭包我们平时使用很多;只是并未提及,下面就是一个例子:
function fn(){
var max =10;
return function bar(x){
if (x > max){
console.log(x);
}
}
}
var f1 = fn();
f1(15)//15
函数里面有函数,我们发现在函数执行完成之后x未被销毁;
还有匿名函数的方式:
<body>
<ul id="ul">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</body>
<script>
var lis = document.getElementById("ul").getElementsByTagName("li");
for(var i = 0; i < lis.length; i++){
(function(i){
lis[i].onclick = function(){
console.log(i);
}
}(i));
}
注意这两个i不同,第一个为形参;第二个是我们定义的循环变量;
这里的i没有被销毁;
JS对象基础 闭包等的更多相关文章
- JS对象基础
JavaScript 对象 JavaScript 提供多个内建对象,比如 String.Date.Array 等等. 对象只是带有属性和方法的特殊数据类型. 访问对象的属性 属性是与对象相关的值. 访 ...
- js对象基础写法练习
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)
函数声明 JavaScript中声明函数的方式:(无需声明返回值类型) function add(i1, i2) { return i1 + i2;//如果不写return返回 ...
- 【学习笔记】深入理解js原型和闭包(2)——函数和对象的关系
上文(深入理解jS原型和闭包(1)——一切都是对象)已经提到,函数就是对象的一种,因为通过instanceof函数可以判断. var fn = function () { }; console.log ...
- 【学习笔记】深入理解js原型和闭包(1)—— 一切都是对象
“一切都是对象”这句话的重点在于如何去理解“对象”这个概念. ——当然,也不是所有的都是对象,值类型就不是对象. 首先咱们还是先看看javascript中一个常用的运算符——typeof.typeof ...
- 认识JS的基础对象,定义对象的方法
JS的基础对象: 1.window //窗口对象 2.document //文档对象 3.document.documentElement //html对象 4.docume ...
- javascript基础-js对象
一.js对象的创建 1.普通最简单的方式 var teacher = new Object( ); teacher.name = "zhangsan"; teacher.age = ...
- 前端(十七)—— jQuery基础:jQuery的基本使用、JQ功能概括、JS对象与JQ对象转换、Ajax简单应用、轮播图
jQuery的基本使用.JQ功能概括.JS对象与JQ对象转换.Ajax简单应用.轮播图 一.认识jQuery 1.什么是jQuery jQuery是对原生JavaScript二次封装的工具函数集合 j ...
- JavaScript基础—闭包,事件
Js基础-闭包,事件 1:js中的闭包 概念:在一个函数内部又定义了一个函数,内部函数能访问到外部函数作用域范围内的变量,这时这个内部函数就叫做闭包,无论这个内部函数在哪里被调用都能访问到外部函数作用 ...
随机推荐
- Mysql数据类型 来自官方手册5.6
整形的取值范围: 定点数值(精确): 在MySQL中,NUMERIC被实现为DECIMAL,所以关于DECIMAL的以下说明同样适用于NUMERIC. MySQL以二进制格式存储DECIMAL值. ...
- [Go] 使用读写锁对map资源进行安全处理
当需要有一个全局性的map集合资源进行增删改数据时,需要对该map资源增加读写锁,防止并发时出现安全问题 下面的类就是举例 , 属性中的Conns模拟存储一些资源,对这些资源进行并发的增加数据,使用写 ...
- Python 异常处理Ⅲ
使用except而不带任何异常类型 你可以不带任何异常类型使用except,如下实例: 以上方式try-except语句捕获所有发生的异常.但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信 ...
- k8s-for批量拉取国内镜像并做tag标签
kubeadm config images list ##查看所需镜像 如果是1.15 或者是其他就需要改改 又或者是下面的国内的镜像地址不能用了 百度完改改就ok #!/bin/bash im ...
- BZOJ 3589: 动态树 树链剖分+线段树+树链的并
利用树剖序的一些性质~ 这个题可以出到 $\sum k=10^5$ 左右. 做法很简单:每次暴力跳重链,并在线段树上查询链和. 查询之后打一个标记,把加过的链都置为 $0$.这样的话在同一次询问时即使 ...
- Python3学习笔记(十五):常用时间模块time和datetime
一.time模块 1.时间戳 time.time() :从1970-01-01到至今的秒数 import time print(time.time()) 1529238004.2784646 2.等待 ...
- TCP连接数配置
一般的设置规则为: 系统最大文件数>可用端口>用户最大文件数 sysctl -a | grep file-max cat /proc/sys/fs/file-max 这表明这台Linux系 ...
- 按下enter触发事件
原理:按下enter的事件属于键盘事件,我们可以先用下面函数来获取enter的键码(键盘上的按键都有各自的键码),通过这个键码可以来判断按下的是哪个键 document.addEventListene ...
- vue router 报错:NavigationDuplicated {_name: "NavigationDuplicated", name: "NavigationDuplicated"}
https://blog.csdn.net/weixin_43202608/article/details/98884620
- 高并发通信模型NIO
一.NIO和BIO的对比 BIO通信模型 2.配置 BIO tomcat server.xml NIO 3.NIO