js–补基础

  • 2018-04-08
  • 86
  • 0

js的基础功一定程度上会决定你的前端的道路能走多远,然而所谓的js基础又是什么了,这个圈内人常说,但是又没有个固定的指向,真的让我们这群菜菜无言以对,所以万事靠自己

1.http

这是计算机基础通识,实际的过程相当复杂,但是作为一个前段,基础的部分还是要知道的
1.请求方式

请求方式 说明 注意点
GET
POST
PUT
PATCH
DELETE

2.http状态码

2XX 成功

  • 200 OK,表示从客户端发来的请求在服务器端被正确处理
  • 204 No content,表示请求成功,但响应报文不含实体的主体部分
  • 205 Reset Content,表示请求成功,但响应报文不含实体的主体部分,但是与 204 响应不同在于要求请求方重置内容
  • 206 Partial Content,进行范围请求

3XX 重定向

  • 301 moved permanently,永久性重定向,表示资源已被分配了新的 URL
  • 302 found,临时性重定向,表示资源临时被分配了新的 URL
  • 303 see other,表示资源存在着另一个 URL,应使用 GET 方法获取资源
  • 304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况
  • 307 temporary redirect,临时重定向,和302含义类似,但是期望客户端保持请求方法不变向新的地址发出请求

4XX 客户端错误

  • 400 bad request,请求报文存在语法错误
  • 401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息
  • 403 forbidden,表示对请求资源的访问被服务器拒绝
  • 404 not found,表示在服务器上没有找到请求的资源

5XX 服务器错误

  • 500 internal sever error,表示服务器端在执行请求时发生了错误
  • 501 Not Implemented,表示服务器不支持当前请求所需要的某个功能
  • 503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求
    3.http请求头

2.js不常使用,但却基础重要(针对我们这些菜鸟)

var altwrite = document.write;
altwrite("hello");
//1.以上代码有什么问题
//2.正确操作是怎样的
//3.bind()方法怎么实现

// 对于上面这道题目,答案并不是太难,主要考点就是this指向的问题,altwrite()函数改变this的指向global或window对象,导致执行时提示非法调用异常,正确调用
altwrite.bind(document)("hello")
// 当然也可以用call
altwrite.call(document)("hello")

bind()最简单的用法是创建一个函数,使这个函数不论怎么调用都有同样的this值。常见的错误就像上面的例子一样,将方法从对象中拿出来,然后调用,并且希望this指向原来的对象。如果不做特殊处理,一般会丢失原来的对象。使用bind()方法能够很漂亮的解决这个问题:

this.num = 9; 
var mymodule = {
  num: 81,
  getNum: function() { return this.num; }
};

module.getNum(); // 81

var getNum = module.getNum;
getNum(); // 9, 因为在这个例子中,"this"指向全局对象

// 创建一个'this'绑定到module的函数
var boundGetNum = getNum.bind(module);
boundGetNum(); // 81

### 原型对象

先说说原型对象,红宝书中有写,“无论什么时候,只要穿件一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的远行对象,在默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性是一个指向prototype属性所在函数的指针。”

 

扩展

这里发现一个叫偏函数(Partial Functions)
定义:Partial application can be described as taking a function that accepts some number of arguments, binding values to one or more of those arguments, and returning a new function that only accepts the remaining, un-bound arguments.

function list() {
  return Array.prototype.slice.call(arguments);
}

var list1 = list(1, 2, 3); // [1, 2, 3]

// 预定义参数37
var leadingThirtysevenList = list.bind(undefined, 37);

var list2 = leadingThirtysevenList(); // [37]
var list3 = leadingThirtysevenList(1, 2, 3); // [37, 1, 2, 3]

  • call()
  • apply()

js的原型好图

仔细理解这张图(一年的我,以前看着能懂,但却感觉理解不够深刻)

评论

还没有任何评论,你来说两句吧

- 友情链接 - Theme by Qzhai