如何绕过.push不是javascript中的函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何绕过.push不是javascript中的函数?相关的知识,希望对你有一定的参考价值。

我需要堆叠二进制文件。需要使用无原型。使用此代码时,我收到的错误是remStack.push不是函数。我在这里错过了什么?

function Stack() {}
function divideBy2(decNumber) {
  var remStack = new Stack(),
    rem,
    binaryString = '';
  while (decNumber > 0) {
    rem = Math.floor(decNumber % 2);
    remStack.push(rem);
    decNumber = Math.floor(decNumber / 2)
  }
  while (!remStack.isEmpty()) { //{5}
    binaryString += remStack.pop().toString();
  }
  return binaryString;
}
console.log(divideBy2(233));
答案

正如其他人所指出的,你的Stack类没有pushpopisEmpty函数。

以下是我将如何做到这一点(不使用任何外部库并使用JS Array实现Stack类)。

function Stack() {
  this.myStack = [];
  this.push = function(val) {
  	this.myStack[this.myStack.length] = val;
  };
  this.isEmpty = function() {
  	return this.myStack.length <= 0;
  };
  this.pop = function() {
	return this.myStack.splice(this.myStack.length - 1, 1)[0];
  };
}

function divideBy2(decNumber) {
  var remStack = new Stack(), rem, binaryString = '';
  while (decNumber > 0) {
    rem = Math.floor(decNumber % 2);
    remStack.push(rem);
    decNumber = Math.floor(decNumber / 2)
  }
  while (!remStack.isEmpty()) { //{5}
    binaryString += remStack.pop().toString();
  }
  return binaryString;
}

console.log(divideBy2(233));
另一答案

稍作修改即可。

function Stack() {}
function divideBy2(decNumber) {
  var remStack = []//new Stack(),
    var rem,
    binaryString = '';
  while (decNumber > 0) {
    rem = Math.floor(decNumber % 2);
    remStack.push(rem);
    decNumber = Math.floor(decNumber / 2)
  }
  while (!remStack.length == 0) { //{5}
    binaryString += remStack.pop().toString();
  }
  return binaryString;
}
console.log(divideBy2(233));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
另一答案

在这里,我发现了一些错误。

  1. 你必须从Stack函数返回数组。其实你我需要有功能而不是对象。使用new运算符,您正在使用Stack的实例。在这里,在Stack Object中我已经创建了一个数组变量;
  2. 在数组中,你不能有空函数。你需要计算它的价值。在这里,我做了<1条件 function Stack(){var myarray = [];返回myarray; function divBy2(decNumber){var remStack = Stack(),rem,binaryString =''; while(decNumber> 0){rem = Math.floor(decNumber%2); remStack.push(REM); decNumber = Math.floor(decNumber / 2)} while(!remStack.length <1){// {5} binaryString + = remStack.pop()。toString(); } return binaryString; } console.log(divideBy2(233));

以上是关于如何绕过.push不是javascript中的函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何绕过Javascript中的sql注入错误

"push" 不是函数 [在 getElementsByTagName 返回的元素上]

如何编写递归函数javascript push我的数组属性Json对象?

如何绕过:远程:GitLab:作者 是不是团队中的一员?

filter_var 函数()使用javascript伪协议绕过执行xss

JavaScript 开发人员不使用 Array.push() 是不是有原因?