1.对象定义

定义属性

var language = {
name:'javascript',
score:9.0
};
console.log(language.name)
console.log(language.score)

定义方法

var language = {
name:'javascript',
score:9.0,
percent: function () {
var result = this.score/10*100 + '%';
return result;
}
};
console.log(language.name)
console.log(language.score)
console.log(language.percent)
console.log(language.percent())

this关键字详解

在属性和方法中,this关键字表示对象本身,即language

如果不在对象中定义的方法或变量中,this指代的是什么呢?

function get_percent() {
var result = this.score/10*100 + '%';
return result;
}
var language = {
name:'javascript',
score:9.0,
percent: get_percent
};
console.log(language.percent())
console.log(get_percent())
var fn = language.percent
console.log(fn())

当以对象的方式调用时,this指向被调用的对象,需要注意的是必须用obj.xxx(),this才指向该对象

当单独调用时,this指向全局对象,也就是window

如果是方法内部定义的方法呢?

var language = {
name:'javascript',
score:9.0,
percent: function () {
function get_percent() {
var result = this.score/10*100 + '%';
return result;
}
return get_percent()
}
};
console.log(language.percent())

答案是找不到对象的,可以再方法内将this赋给变量,然后内部方法访问变量,就可以找到对象了。

2.apply关键字

apply关键字用来控制this指向的对象

function get_percent() {
var result = this.score/10*100 + '%';
return result;
}
var language = {
name:'javascript',
score:9.0,
};
var result = get_percent.apply(language,[])
console.log(result)

get_percent.apply(language,[])

language:get_percent函数的this参数绑定为language

[]:get_percent函数本身的参数

与call关键字的区别,apply参数是数组,call按顺序传入。

3.装饰器

javascript基础拾遗(二)的更多相关文章

  1. JavaScript基础笔记二

    一.函数返回值1.什么是函数返回值    函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...

  2. javascript基础拾遗(十二)

    1.javascript的单线程特性 在javascript中,所有的代码都是单线程的 因此所有的网络操作,浏览器事件,都必须是异步执行的,异步执行的逻辑是回调. function callback( ...

  3. Javascript 基础(二)

    一.js运算符: +.-.*./.% %(去模 就是计算两个数的余数,通常判断是否能整除),主要用于整数. var a=90; var b=8; if(a%b==0) window.alert(&qu ...

  4. JavaScript基础(二)

    一.外部引用语法<script src="script.js"></script> 二.在页面中的位置 1.我们可以将JavaScript代码放在html文 ...

  5. JavaScript基础学习(二)—JavaScript基本概念

    一.语法 1.区分大小写     JavaScript是一种弱类型的脚本语言.它区分大小写,变量名test与Test表示两个完全不同的变量.   2.标识符      所谓标识符就是变量.函数.属性的 ...

  6. 前端开发之JavaScript基础篇二

    主要内容: 1.流程控制条件语句和switch语句 2.for循环和while循环 3.Break语句和Continue语句 4.数组和数组常用方法 5.函数 6.对象 一.流程控制条件语句和swit ...

  7. javascript基础(二)类型转换

    原文http://pij.robinqu.me/ 类型转换 当期望使用一个布尔值的时候,可以提供任意类型值,JavaScript将根据需要自行转换类型.类型转换可以分为隐式转换和显式转换. 显式转换 ...

  8. javascript基础拾遗(十三)

    1.jQuery的特点 jQuery是目前非常流行的javascript库,理念是"Write Less,Do More" 1)消除浏览器差异 2)简洁的操作DOM方法 3)轻松实 ...

  9. javascript基础拾遗(十一)

    1.DOM操作 1)查找 //根据id查找 document.getElementById() //根据html标签查找 documnet.getElementByTagName() //根据样式cl ...

随机推荐

  1. 基于Pygame写的翻译方法

    发布时间:2018-11-01   技术:pygame+easygui   概述 实现一个翻译功能,中英文的互相转换.并可以播放翻译后的内容. 翻译接口调用的是百度翻译的api接口. 详细 代码下载: ...

  2. 使用maven-assembly-plugin打包zipproject

    使用Maven对Web项目进行打包.默觉得war包.但有些时候.总是希望打成zip包(亦或其它压缩包,类似tomcat的那种文件夹结构,直接运行bin/startup.sh就能够),maven-war ...

  3. List集合去重的一些方法(常规遍历、Set去重、java8 stream去重、重写equals和hashCode方法)

    1. 常规元素去重 碰到List去重的问题,除了遍历去重,我们常常想到利用Set集合不允许重复元素的特点,通过List和Set互转,来去掉重复元素. // 遍历后判断赋给另一个list集合,保持原来顺 ...

  4. iOS No matching provisioning profile found for "Applicartion/xxx.app"的解决方案

    最近对一个旧项目更新功能时,遇到了一个问题: No matching provisioning profile found for "Applicartion/xxx.app" 如 ...

  5. keras callback中的stop_training

    keras这个框架简洁优美,设计上堪称典范.而tensorflow就显得臃肿庞杂,混乱不清.当然,keras的周边部件比如callbacks.datasets.preprocessing有许多过度设计 ...

  6. C语言学习笔记 (009) - 对函数的进一步讨论

    一.给main函数传参: # include <stdio.h> int main(int argc,char **argv){ printf(]); ; } 二.指向函数指针变量的定义 ...

  7. mysql基本语句集合

    一.概述 1.删除字段 alter table {table_name} drop column {column_name}; 2.添加字段 alter table {table_name} Add ...

  8. mysql数据库优化 pt-query-digest使用

    mysql数据库优化 pt-query-digest使用 一.pt-query-digest工具简介 pt-query-digest是用于分析 mysql慢查询的一个工具,它可以分析binlog.Ge ...

  9. TCP连接的TIME_WAIT过多导致 Tomcat 假死

    最近发现使用的Tomcat 7会经常假死.前端点击页面无任何反应,打开firebug,很多链接一直在等待服务器的反应.查看服务器的状态,CPU占用很少,最多不超过10%,一般只有2%,3%左右,内存占 ...

  10. ES6--变量的声明及解构赋值

    ​ ES6的目标是使得JavaScript语言能够用来编写大型的复杂的应用程序.成为企业级开发语言:该标准已于2015年6月17日正式公布. 可是真正的普及我觉得还得须要一段时间.然而这并非理由让我们 ...