美文网首页
JS知识点(一)

JS知识点(一)

作者: 张正yi | 来源:发表于2018-05-27 22:40 被阅读0次

1、this

1.1、在一般函数方法中使用 this 指代全局对象

    function aa(){
        var user = "xxx";
        console.log(this.user); //undefined
        console.log(this); //Window
    }
    aa();

1.2、作为对象方法调用,this 指代上级对象

  const a = {
        dam: "zhang",
        foo(){ // this表示的是a这个对象
            return this.dam
        }
  };
  console.log(a.foo()); //zyzhang

1.3、作为构造函数调用,this 指代new 出的对象

    function Fn(){
        this.user = "zyzhang";
    }
    var a = new Fn();
    console.log(a.user); //zyzhang

    // 注意:Fu函数如果返回值是一个对象,那么this指向的就是那个返回的对象,
    // 如果返回值不是一个对象那么this还是指向函数的实例。
    // 如下:
    function fn() {
        this.user = '追梦子';
        return {};
    }
    var a = new fn;
    console.log(a); //{} 
    console.log(a.user); //undefined 
    // 如果返回的不是一个对象比如是1,undefined,将会是另一个结果。  
    // 特别注意:虽然null也是对象,但是在这里this还是指向那个函数的实例,因为null比较特殊。

1.4、apply 调用 ,apply方法作用是改变函数的调用对象,此方法的第一个参数为改变后调用这个函数的对象,this指代第一个参数

2、call,apply,bind方法汇总

在js中,这三种方法都是用来改变函数的this对象的指向的。

第一个参数都是this要指向的对象,后面都可以继续传递参数。

分析:

var xb = {
    name: '小冰',
        gender: '女',
        say: function () {
            console.log(this.name + ',' + this.gender);
        }
};
var other = {
    name: '小东',
    gender: '男',
};
xb.say();
//很明显代码输出了“小冰,女”。

如果我们想要用xb的say()方法输出other的数据,要怎么办呢?这时就需要改变this的指向了。
如下三个方法都能实现:

xb.say.call(other);
xb.say.apply(other);
xb.say.bind(other)();

call()和apply()函数的用法其实是一样的,只是传参的形式不一样,这是他们最大的差别
xb.say.call(other,'斯坦福','3') // ====> 小东,男----斯坦福,3
xb.say.apply(other,['sitanfu','third']);// ====> 小东,男----sitanfu,third
bind()呢?
xb.say.bind(other,'斯坦福','3');// 是不是跟call传参很像
但是上面xb.say.bind(other,’斯坦福’,’3’),返回的其实还是一个函数,并没有执行
所以要执行,需要在xb.say.bind(other)后面加()让其执行。执行结果如下:
console.log(xb.say.bind(other))('斯坦福','3');// ==> 小东,男---斯坦福,3

3、ES6相关的部分关键点

3.1、模板字符串

将表达式嵌入字符串中进行拼接。用${}来界定。

//es5
 var name = 'lux'
 console.log('hello' + name)
//es6
 const name = 'lux'
 console.log(`hello ${name}`) //hello lux

3.2、更方便的数据访问--解构

//对象(数组类似)
const people = {
    name: 'lux',
    age: 20
}
const {name, age} = people
console.log(`${name} --- ${age}`)

3.3、Spread Operator 展开运算符

//数组
const color = ['red', 'yellow']
const colorful = [...color, 'green', 'pink']
console.log(colorful) //[red, yellow, green, pink]

3.4、import 和 export

import导入模块、export导出模块

//全部导入
import people from './example'
//有一种特殊情况,即允许你将整个模块当作单一对象进行导入
//该模块的所有导出都会作为对象的属性存在
import * as example from "./example.js"
console.log(example.name)
console.log(example.age)
console.log(example.getName())
//导入部分
import {name, age} from './example'
// 导出默认, 有且只有一个默认
export default App
// 部分导出
export class App extend Component {};

4、页面初始化

<script src="js/jquery-3.2.1.js"></script>
    <script>
        // 网页中所有dom结构绘制完毕后就执行可能DOM元素关联的东西并没有加载完
        $(document).ready(function () {
            alert("hello world");
        });
        // 简化写法:$(function(){...})

        // 必须等待网页中所有的内容加载完毕后(包括图片)才能执行
        window.onload = function () {
            alert("hello world !!!")
        }

    </script>

5、DOM对象(Document Object Model)

解释:当浏览器载入HTML文档, 它就会成为document对象。
每一份DOM都可以表示成一棵树,由不同的DOM节点(如:元素节点,文本节点,属性节点, 注释节点)组成。
示例:获取元素节点
var domObj = document.getElementById("id名称"); // 此时domObj就是我们得到的一个DOM对象
我们通过获取的对象来使用它的属性进行相应的操作,如:使用domObj.innerHtml获取该元素的内容
而jQuery对象就是通过jQuery包装DOM对象后产生的对象。
如:$(“#foo”).html; // 获取id为foo的元素内的html代码。html()就是jQuery封装的方法。
所以这段代码可以这样写:
doucment.getElementById("foo").innetHtml;// 原生写法
扩展
1)开发过程中需要按如下规则命名如
var $variable = jQuery对象;
var variable = DOM对象;
2)jQuery转DOM对象
var $cr = $("#cr"); // jQuery对象
如需要将该对象转化为DOM对象有两个方法:[idnex]和get[index]
// var cr = $cr[0] or $cr.get[0]
3)DOM对象转化为jQuery对象:(使用$()把DOM对象包起来即可)
var cr = document.getElementById("cr"); // DOM对象
var $cr = $(cr);

相关文章

  • js小知识点

    js小知识点 整理 js小知识点 (一):获取元素 1:document.getElementById('id名'...

  • 小知识点集汇一

    小知识点集汇一 小知识点 node接口模拟返回 js接口模拟数据 mockjs mocha js 测试框架--教程...

  • 前端知识温习

    js知识点 温习js css知识点 温习css jquery温习 自己实现一个jquery vue框架温习 温习v...

  • 2018-08-22

    今天简单了解了一下关于js对象的知识点。包括JS 数字 JS 字符串 JS 日期 JS 数组 JS 逻辑 JS 算...

  • js的浅拷贝与深拷贝

    js的浅拷贝与深拷贝 涉及知识点: js中的数据类型(基本类型,引用类型) js中的存储数据的堆栈相关知识点; 下...

  • 18-进阶:Canvas 画板

    本节知识点 JS知识点 获取标签的方法之一(id):document.getElementById(id) 鼠标按...

  • js旋转木马特效

    目标知识点 : 学习js数组的增删方法:(pop()、push()、shift()、unshift()) 练习js...

  • JavaScript基础知识点整理(下)

    在上一篇文章《JS基础知识点(一)》中我们学习了什么是js、js写法、js数据类型、js的函数。在本篇文章中我们将...

  • Node.js学习笔记-https与跨域问题

    一、Node.js知识点 1.Node.js配置https 2.Node.js解决跨域问题 3.ajax访问 一般...

  • JS知识点(一)

    1、this 1.1、在一般函数方法中使用 this 指代全局对象 1.2、作为对象方法调用,this 指代上级对...

网友评论

      本文标题:JS知识点(一)

      本文链接:https://www.haomeiwen.com/subject/yuvijftx.html