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. U盘安装win10

    1. 下载win10的安装ISO, 这里使用的是 LENOVO_Win10_multiple_editions_x64_zh-cn_DV5.iso 2. 准备一个大小不低于8G的U盘, 因为ISO文件 ...

  2. suricate学习笔记1--初步认识(转)

    最近在研究关于dpi网卡采集的代码重组这块,公司一个同事,简单的用CPP讲解了suricata内部的一些处理逻辑,,,其中大部分代码是用C语言写的,对于用C重构代码有很好的借鉴作用,,,如果有相关工作 ...

  3. scp的两种方式

    如果host A 与 host B建立了信任连接(B有A的public key),那么从A向B传送文件,或者从B上传回文件都可以省略密码.但是前提是命令是在A上执行的. 从A向B拷贝文件 on hos ...

  4. 树莓派进阶之路 (018) - raspberryPi摄像头命令行软件raspistill帮助文档

    文档原文:https://www.raspberrypi.org/app/uploads/2013/07/RaspiCam-Documentation.pdf 作用 在指定的时间运行摄像头,而且如果需 ...

  5. httpd: Could not reliably determine the server's fully qualified domain name(转)

    ttpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for Ser ...

  6. opestack keystone 深入

    一.概述 keystone 有两个endpoint端口,一个35357,用于管理,只有admin_role可以使用.一个是5000, 用于业务: 二.keystone中的路由 解析url,然后获取后端 ...

  7. 【colaboratory】在colab中安装mxnet

    在学习<动手学深度学习>内容是,该内容用的是mxnet框架,在电脑本地安装过程中又容易出现错误,怎么也安装不上,所有的条件都尝试了. 汗颜,指的另谋他法. 只有在谷歌的学习平台上安装使用h ...

  8. 【转】完全用Linux工作

    我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. NU/Linux 不是每个人都想用的.如果你只需要处理一般的事务,打游戏,那么你不需要了解下面这些了. 我不是 ...

  9. 关于Java读取mysql中date类型字段默认值'0000-00-00'的问题

    今天在做项目过程中,查询一个表中数据时总碰到这个问题:      java.sql.SQLException:Value '0000-00-00' can not be represented as ...

  10. C# 获取接口数据(xml格式)转为json格式

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...